diff options
| author | 2018-12-03 08:46:37 -0800 | |
|---|---|---|
| committer | 2018-12-03 08:46:37 -0800 | |
| commit | bd9669cd6a7cd47dabf050479bdf8b9b0e2b6669 (patch) | |
| tree | 33ee0b6b2560dfc90437061957f41b09aee2abce | |
| parent | c4cbe40fda3b3c19edc3daaefe20621483c38bb2 (diff) | |
| parent | 745d594b588059cf81f8134de650df4e1e4a8d8b (diff) | |
Merge "Fix AndroidCharacter.getDirectionalities for unassigned Unicode code points" am: d7e22212a5 am: dfdc3a2df2
am: 745d594b58
Change-Id: Ibcdbfb1630fb4ba93d116d9581aa56d94942f1a7
| -rw-r--r-- | core/jni/android_text_AndroidCharacter.cpp | 6 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/text/AndroidCharacterTest.java | 24 |
2 files changed, 13 insertions, 17 deletions
diff --git a/core/jni/android_text_AndroidCharacter.cpp b/core/jni/android_text_AndroidCharacter.cpp index 9bba13a6930e..c6ea4e10f63e 100644 --- a/core/jni/android_text_AndroidCharacter.cpp +++ b/core/jni/android_text_AndroidCharacter.cpp @@ -76,7 +76,8 @@ static void getDirectionalities(JNIEnv* env, jobject obj, jcharArray srcArray, int c = 0x00010000 + ((src[i] - 0xD800) << 10) + (src[i + 1] & 0x3FF); int dir = u_charDirection(c); - if (dir < 0 || dir > JAVA_LANG_CHARACTER_MAX_DIRECTIONALITY) + if (dir < 0 || dir > JAVA_LANG_CHARACTER_MAX_DIRECTIONALITY + || u_charType(c) == U_UNASSIGNED) dir = PROPERTY_UNDEFINED; else dir = directionality_map[dir]; @@ -86,7 +87,8 @@ static void getDirectionalities(JNIEnv* env, jobject obj, jcharArray srcArray, } else { int c = src[i]; int dir = u_charDirection(c); - if (dir < 0 || dir > JAVA_LANG_CHARACTER_MAX_DIRECTIONALITY) + if (dir < 0 || dir > JAVA_LANG_CHARACTER_MAX_DIRECTIONALITY + || u_charType(c) == U_UNASSIGNED) dest[i] = PROPERTY_UNDEFINED; else dest[i] = directionality_map[dir]; diff --git a/core/tests/coretests/src/android/text/AndroidCharacterTest.java b/core/tests/coretests/src/android/text/AndroidCharacterTest.java index d976adb14ef3..0c7e730e78e4 100644 --- a/core/tests/coretests/src/android/text/AndroidCharacterTest.java +++ b/core/tests/coretests/src/android/text/AndroidCharacterTest.java @@ -35,13 +35,10 @@ public class AndroidCharacterTest { byte[] java_lang_results = new byte[size]; int index = 0; for (int cp = 0; cp <= Character.MAX_VALUE; cp++) { - // Exempt unassigned code point due to b/120074586 - if (Character.getType(cp) != Character.UNASSIGNED) { - if (cp < Character.MIN_SURROGATE || cp > Character.MAX_SURROGATE) { - chars[index] = (char) cp; - java_lang_results[index] = Character.getDirectionality(cp); - index++; - } + if (cp < Character.MIN_SURROGATE || cp > Character.MAX_SURROGATE) { + chars[index] = (char) cp; + java_lang_results[index] = Character.getDirectionality(cp); + index++; } } @@ -60,14 +57,11 @@ public class AndroidCharacterTest { int index = 0; for (int cp = Character.MIN_SUPPLEMENTARY_CODE_POINT; cp <= Character.MAX_CODE_POINT; cp++) { - // Exempt unassigned code point due to b/120074586 - if (Character.getType(cp) != Character.UNASSIGNED) { - chars[index] = Character.highSurrogate(cp); - chars[index + 1] = Character.lowSurrogate(cp); - java_lang_results[index] = java_lang_results[index + 1] = Character - .getDirectionality(cp); - index += 2; - } + chars[index] = Character.highSurrogate(cp); + chars[index + 1] = Character.lowSurrogate(cp); + java_lang_results[index] = java_lang_results[index + 1] = Character + .getDirectionality(cp); + index += 2; } byte[] android_text_results = new byte[size]; |