6609431: (rb) ResourceBundle.getString() returns incorrect value
authornaoto
Thu, 27 Jun 2013 14:40:21 -0700
changeset 18568 59fcf0320687
parent 18567 35b36d452864
child 18569 0e46c17766b7
6609431: (rb) ResourceBundle.getString() returns incorrect value Reviewed-by: okutsu, sherman
jdk/src/share/classes/java/util/Properties.java
jdk/test/java/util/Properties/Bug6609431.java
jdk/test/java/util/Properties/Bug6609431.properties
--- a/jdk/src/share/classes/java/util/Properties.java	Thu Jun 27 14:11:25 2013 -0700
+++ b/jdk/src/share/classes/java/util/Properties.java	Thu Jun 27 14:40:21 2013 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -443,6 +443,9 @@
                         if (len == 0 || isCommentLine) {
                             return -1;
                         }
+                        if (precedingBackslash) {
+                            len--;
+                        }
                         return len;
                     }
                 }
@@ -510,6 +513,9 @@
                                   :inStream.read(inByteBuf);
                         inOff = 0;
                         if (inLimit <= 0) {
+                            if (precedingBackslash) {
+                                len--;
+                            }
                             return len;
                         }
                     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/Properties/Bug6609431.java	Thu Jun 27 14:40:21 2013 -0700
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 6609431
+ * @summary Test whether loading of a property value in a file ending with
+ *    a backslash works fine.
+ */
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.Properties;
+
+public class Bug6609431 {
+    private static final String expected = "backslash";
+
+    public static void main(String[] args) throws IOException {
+        try (FileReader fr =
+                new FileReader(new File(System.getProperty("test.src", "."),
+                                        "Bug6609431.properties"))) {
+            Properties p = new Properties();
+            p.load(fr);
+            p.getProperty("a");
+            String val = p.getProperty("b");
+            if (!val.equals(expected)) {
+                throw new RuntimeException("Value returned from the property" +
+                " list was incorrect. Returned: '" + val +
+                "', expected: '" + expected + "'");
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/Properties/Bug6609431.properties	Thu Jun 27 14:40:21 2013 -0700
@@ -0,0 +1,24 @@
+# 
+# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+# 
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+# 
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+# 
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+# 
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+a=backslashbackslash
+b=backslash\