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 13:08:04 -0700
commit4fdbba03bd35a0404b1870ef555db549f68ee40c (patch)
tree7c16b2c3b91ef67831ca70492335e018d59be336
parent35dba262656ab4b68070ae074ce620f80493a274 (diff)
downloadbase-4fdbba03bd35a0404b1870ef555db549f68ee40c.tar.gz
RESTRICT AUTOMERGEandroid-8.1.0_r71
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 55931d8f1a5f..3e9dc48d2e5a 100644
--- a/core/java/android/text/TextLine.java
+++ b/core/java/android/text/TextLine.java
@@ -239,9 +239,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;
@@ -316,9 +314,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;
@@ -405,9 +401,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;