Merge
authorlana
Wed, 16 Dec 2009 16:25:08 -0800
changeset 4840 74d64c277d62
parent 4839 6b3edc448285 (diff)
parent 4396 d78c0cb4baf7 (current diff)
child 4841 ae658e3b0f27
Merge
jdk/make/tools/CharsetMapping/DoubleByte-X.java
jdk/make/tools/CharsetMapping/SingleByte-X.java
jdk/src/share/classes/sun/awt/ComponentAccessor.java
jdk/src/share/classes/sun/awt/WindowAccessor.java
jdk/src/share/classes/sun/security/provider/IdentityDatabase.java
jdk/src/share/classes/sun/security/provider/SystemIdentity.java
jdk/src/share/classes/sun/security/provider/SystemSigner.java
jdk/src/share/classes/sun/security/x509/X500Signer.java
jdk/src/share/classes/sun/security/x509/X509Cert.java
jdk/src/share/classes/sun/tools/jar/JarVerifierStream.java
jdk/src/share/classes/sun/util/CoreResourceBundleControl-XLocales.java
jdk/src/share/classes/sun/util/LocaleDataMetaInfo-XLocales.java
jdk/test/java/util/Formatter/Basic-X.java
jdk/test/sun/tools/native2ascii/test2
jdk/test/tools/launcher/SolarisDataModel.sh
jdk/test/tools/launcher/SolarisRunpath.sh
jdk/test/tools/launcher/libraryCaller.c
jdk/test/tools/launcher/libraryCaller.h
jdk/test/tools/launcher/libraryCaller.java
langtools/src/share/classes/com/sun/tools/classfile/ModuleExportTable_attribute.java
langtools/src/share/classes/com/sun/tools/classfile/ModuleMemberTable_attribute.java
langtools/src/share/classes/com/sun/tools/classfile/Module_attribute.java
--- a/jdk/src/share/classes/java/text/CollationElementIterator.java	Wed Dec 16 00:09:57 2009 -0800
+++ b/jdk/src/share/classes/java/text/CollationElementIterator.java	Wed Dec 16 16:25:08 2009 -0800
@@ -232,7 +232,7 @@
                     buffer = makeReorderedBuffer(consonant, value, buffer, true);
                     value = buffer[0];
                     expIndex = 1;
-                } else {
+                } else if (consonant != NormalizerBase.DONE) {
                     text.previous();
                 }
             }
@@ -242,7 +242,7 @@
                     buffer = makeReorderedBuffer(consonant, value, buffer, true);
                     value = buffer[0];
                     expIndex = 1;
-                } else {
+                } else if (consonant != NormalizerBase.DONE) {
                     text.previous();
                 }
             }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/text/Collator/Bug5047314.java	Wed Dec 16 16:25:08 2009 -0800
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2009 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 5047314
+ * @summary verify that compare() and getCollationKey() don't go into an infinite loop for unfinished Thai/Lao text.
+ * @run main/timeout=60 Bug5047314
+ */
+import java.text.Collator;
+import java.util.Locale;
+
+public class Bug5047314 {
+
+    private static Collator colLao = Collator.getInstance(new Locale("lo"));
+    private static Collator colThai = Collator.getInstance(new Locale("th"));
+
+    private static String[] textLao = {
+        "\u0ec0", "\u0ec1", "\u0ec2", "\u0ec3", "\u0ec4"
+    };
+    private static String[] textThai = {
+        "\u0e40", "\u0e41", "\u0e42", "\u0e43", "\u0e44"
+    };
+
+    public static void main(String[] args) {
+        testLao1();
+        testLao2();
+        testThai1();
+        testThai2();
+    }
+
+    private static void testLao1() {
+        System.out.print("Test(Lao 1) .... ");
+        for (int i = 0; i < textLao.length; i++) {
+            colLao.compare(textLao[i], textLao[i]);
+        }
+        System.out.println("Passed.");
+    }
+
+    private static void testLao2() {
+        System.out.print("Test(Lao 2) .... ");
+        for (int i = 0; i < textLao.length; i++) {
+            colLao.compare(textLao[i], textLao[i]);
+        }
+        System.out.println("Passed.");
+    }
+
+    private static void testThai1() {
+        System.out.print("Test(Thai 1) .... ");
+        for (int i = 0; i < textThai.length; i++) {
+            colThai.compare(textThai[i], textThai[i]);
+        }
+        System.out.println("Passed.");
+    }
+
+    private static void testThai2() {
+        System.out.print("Test(Thai 2) .... ");
+        for (int i = 0; i < textThai.length; i++) {
+            colThai.getCollationKey(textThai[i]);
+        }
+        System.out.println("Passed.");
+    }
+
+}