diff options
author | Kenny Root <kroot@google.com> | 2011-06-16 02:25:35 -0700 |
---|---|---|
committer | Kenny Root <kroot@google.com> | 2011-06-16 02:28:00 -0700 |
commit | 49e3b372ab288992a4705dfe7f37fbd732d06aed (patch) | |
tree | d6cc08c6161be590c1bf8913c839d9bdfdab9c72 /core | |
parent | fb2f3a530f74f1dfa3ce3dc4079729b5e6607f43 (diff) | |
download | frameworks_base-49e3b372ab288992a4705dfe7f37fbd732d06aed.zip frameworks_base-49e3b372ab288992a4705dfe7f37fbd732d06aed.tar.gz frameworks_base-49e3b372ab288992a4705dfe7f37fbd732d06aed.tar.bz2 |
Fix crash determining direction of invalid locale
The layoutlib is used in the SDK which might not have a default Locale,
so the language string will be some kind of junk. This causes a crash in
the new LocaleUtils
Change-Id: I24e5115c56e39d394dcf89ec6cff609525b3c73e
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/util/LocaleUtil.java | 5 | ||||
-rw-r--r-- | core/tests/coretests/src/android/util/LocaleUtilTest.java | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/core/java/android/util/LocaleUtil.java b/core/java/android/util/LocaleUtil.java index 4511d94..e767a85 100644 --- a/core/java/android/util/LocaleUtil.java +++ b/core/java/android/util/LocaleUtil.java @@ -71,8 +71,9 @@ public class LocaleUtil { if (localeWithSubtags == null) return getLayoutDirectionFromFirstChar(locale); // Need to check if we can extract the script subtag. For example, "Latn" in "en_Latn_US" - if (localeWithSubtags.charAt(2) != UNDERSCORE_CHAR || - localeWithSubtags.charAt(7) != UNDERSCORE_CHAR) { + if (localeWithSubtags.length() <= 7 + || localeWithSubtags.charAt(2) != UNDERSCORE_CHAR + || localeWithSubtags.charAt(7) != UNDERSCORE_CHAR) { return getLayoutDirectionFromFirstChar(locale); } // Extract the script subtag diff --git a/core/tests/coretests/src/android/util/LocaleUtilTest.java b/core/tests/coretests/src/android/util/LocaleUtilTest.java index a3b4948..5aa99c1 100644 --- a/core/tests/coretests/src/android/util/LocaleUtilTest.java +++ b/core/tests/coretests/src/android/util/LocaleUtilTest.java @@ -193,5 +193,10 @@ public class LocaleUtilTest extends AndroidTestCase { locale = new Locale("uz_Arab", "AF"); assertEquals(LocaleUtil.TEXT_LAYOUT_DIRECTION_RTL_DO_NOT_USE, LocaleUtil.getLayoutDirectionFromLocale(locale)); + + // Locale without a real language + locale = new Locale("zz"); + assertEquals(LocaleUtil.TEXT_LAYOUT_DIRECTION_LTR_DO_NOT_USE, + LocaleUtil.getLayoutDirectionFromLocale(locale)); } } |