Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bd9669cd authored by vichang's avatar vichang Committed by android-build-merger
Browse files

Merge "Fix AndroidCharacter.getDirectionalities for unassigned Unicode code...

Merge "Fix AndroidCharacter.getDirectionalities for unassigned Unicode code points" am: d7e22212 am: dfdc3a2d
am: 745d594b

Change-Id: Ibcdbfb1630fb4ba93d116d9581aa56d94942f1a7
parents c4cbe40f 745d594b
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -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];
+9 −15
Original line number Diff line number Diff line
@@ -35,15 +35,12 @@ 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++;
            }
        }
        }

        byte[] android_text_results = new byte[size];
        AndroidCharacter.getDirectionalities(chars, android_text_results, index);
@@ -60,15 +57,12 @@ 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;
        }
        }

        byte[] android_text_results = new byte[size];
        AndroidCharacter.getDirectionalities(chars, android_text_results, index);