From fd1a7e8663feb23ba912e1c519630a2385b452fc Mon Sep 17 00:00:00 2001 From: Seigo Nonaka Date: Wed, 16 Oct 2019 14:48:30 -0700 Subject: [PATCH] RESTRICT AUTOMERGE 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 --- core/java/android/text/TextLine.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/core/java/android/text/TextLine.java b/core/java/android/text/TextLine.java index ddeaece4cb8a..18bca465b62e 100644 --- a/core/java/android/text/TextLine.java +++ b/core/java/android/text/TextLine.java @@ -257,6 +257,9 @@ 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; @@ -333,6 +336,9 @@ 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; @@ -420,6 +426,9 @@ 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; -- 2.11.0