summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeigo Nonaka <nona@google.com>2019-09-16 14:49:49 -0700
committerHuizi Yang <yanghuiz@google.com>2019-10-08 14:05:27 -0700
commit431189726cb8a80f8c20f68fe7e37b2e108e0f7f (patch)
treedff3078be36ff704e3751b57d4933b1912d53a28
parentca63515dd9b4eb6b3698fb694463c145d654e369 (diff)
downloadbase-431189726cb8a80f8c20f68fe7e37b2e108e0f7f.tar.gz
RESTRICT AUTOMERGEandroid-8.0.0_r41
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 (cherry picked from commit 4ce901e4058d93336dca3413dc53b81bbdf9d3e8)
-rw-r--r--core/java/android/text/TextLine.java12
1 files changed, 3 insertions, 9 deletions
diff --git a/core/java/android/text/TextLine.java b/core/java/android/text/TextLine.java
index 5de2f030d5f9..d5b115a699b0 100644
--- a/core/java/android/text/TextLine.java
+++ b/core/java/android/text/TextLine.java
@@ -230,9 +230,7 @@ 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;
@@ -307,9 +305,7 @@ 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;
@@ -396,9 +392,7 @@ 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;