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

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

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

am: dfdc3a2d

Change-Id: I3920dc88d2c4473b33bb2cf129e91fc261553e48
parents 36d41a9a dfdc3a2d
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);