OSDN Git Service

RESTRICT AUTOMERGE
authorSeigo Nonaka <nona@google.com>
Wed, 16 Oct 2019 21:48:30 +0000 (14:48 -0700)
committerHuizi Yang <yanghuiz@google.com>
Thu, 17 Oct 2019 19:56:20 +0000 (12:56 -0700)
Revive runLimit check logic

The runLimit check logic was accidentally removed by
I7089ed9b711dddd7de2b27c9c2fa0fb4cb53a735

Bug: 142134328
Bug: 140632678
Test: Manually done with reported step
Test: StaticLayoutTest passes
Change-Id: Ib1d5efdcb9adcc18a6a43370dc016ea464f48148
(cherry picked from commit 7b05578d9c87eee4ce5af64d9aee94e709f809cd)

core/java/android/text/TextLine.java

index 3e9dc48..a6425ef 100644 (file)
@@ -239,6 +239,9 @@ class TextLine {
         for (int i = 0; i < runs.length; i += 2) {
             int runStart = runs[i];
             int runLimit = runStart + (runs[i+1] & Layout.RUN_LENGTH_MASK);
+            if (runLimit > mLen) {
+                runLimit = mLen;
+            }
             if (runStart > mLen) break;
             boolean runIsRtl = (runs[i+1] & Layout.RUN_RTL_FLAG) != 0;
 
@@ -314,6 +317,9 @@ class TextLine {
         for (int i = 0; i < runs.length; i += 2) {
             int runStart = runs[i];
             int runLimit = runStart + (runs[i+1] & Layout.RUN_LENGTH_MASK);
+            if (runLimit > mLen) {
+                runLimit = mLen;
+            }
             if (runStart > mLen) break;
             boolean runIsRtl = (runs[i+1] & Layout.RUN_RTL_FLAG) != 0;
 
@@ -401,6 +407,9 @@ class TextLine {
         for (int i = 0; i < runs.length; i += 2) {
             int runStart = runs[i];
             int runLimit = runStart + (runs[i + 1] & Layout.RUN_LENGTH_MASK);
+            if (runLimit > mLen) {
+                runLimit = mLen;
+            }
             if (runStart > mLen) break;
             boolean runIsRtl = (runs[i + 1] & Layout.RUN_RTL_FLAG) != 0;