diff options
author | Seigo Nonaka <nona@google.com> | 2019-09-16 14:49:49 -0700 |
---|---|---|
committer | Sterling Huber <hubers@google.com> | 2019-09-30 17:32:57 +0000 |
commit | f582b9bc9834c80f48070b032637dd1c94ebe6f4 (patch) | |
tree | 507ffdb4b85fc395ca26de82312a54686b0b1c13 | |
parent | 604d91d71353640c585fc84c683f544dd2997815 (diff) | |
download | base-f582b9bc9834c80f48070b032637dd1c94ebe6f4.tar.gz |
RESTRICT AUTOMERGE
Do not compute outside given range in TextLine
This is second attempt of I646851973b3816bf9ba32dfe26748c0345a5a081
which breaks various layout test on application.
The empty string must be also handled by the TextLine since it
retrieves the default line height from the empty string.
Bug: 140632678
Test: StaticLayoutTest
Test: Manually done
Change-Id: I7089ed9b711dddd7de2b27c9c2fa0fb4cb53a735
-rw-r--r-- | core/java/android/text/TextLine.java | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/core/java/android/text/TextLine.java b/core/java/android/text/TextLine.java index 5bfd3e942934..ddeaece4cb8a 100644 --- a/core/java/android/text/TextLine.java +++ b/core/java/android/text/TextLine.java @@ -257,9 +257,7 @@ public 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; int segstart = runStart; @@ -335,9 +333,7 @@ public 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; int segstart = runStart; @@ -424,9 +420,7 @@ public 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; int segstart = runStart; |