]> granicus.if.org Git - icu/commitdiff
ICU-10908 LocaleDisplayNames thread safety fix.
authorAndy Heninger <andy.heninger@gmail.com>
Wed, 2 Jul 2014 22:19:59 +0000 (22:19 +0000)
committerAndy Heninger <andy.heninger@gmail.com>
Wed, 2 Jul 2014 22:19:59 +0000 (22:19 +0000)
X-SVN-Rev: 35988

icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleDisplayNamesImpl.java

index 785bde3612c7fb5480f53f62a8be98bb8f5ce3e1..e818ff0539e4a6655de35db7704842a979ec121b 100644 (file)
@@ -220,12 +220,14 @@ public class LocaleDisplayNamesImpl extends LocaleDisplayNames {
                 (capitalizationUsage != null && capitalizationUsage[usage.ordinal()]) )) {
             // Note, won't have capitalizationUsage != null && capitalizationUsage[usage.ordinal()]
             // unless capitalization is CAPITALIZATION_FOR_UI_LIST_OR_MENU or CAPITALIZATION_FOR_STANDALONE
-            if (capitalizationBrkIter == null) {
-                // should only happen when deserializing, etc.
-                capitalizationBrkIter = BreakIterator.getSentenceInstance(locale);
+            synchronized (this) {
+                if (capitalizationBrkIter == null) {
+                    // should only happen when deserializing, etc.
+                    capitalizationBrkIter = BreakIterator.getSentenceInstance(locale);
+                }
+                return UCharacter.toTitleCase(locale, name, capitalizationBrkIter,
+                        UCharacter.TITLECASE_NO_LOWERCASE | UCharacter.TITLECASE_NO_BREAK_ADJUSTMENT);
             }
-            return UCharacter.toTitleCase(locale, name, capitalizationBrkIter,
-                            UCharacter.TITLECASE_NO_LOWERCASE | UCharacter.TITLECASE_NO_BREAK_ADJUSTMENT);
         }
         return name;
     }