From 0a57fe099a55ab3a7583b229fa7cfb905d6106f3 Mon Sep 17 00:00:00 2001 From: Seigo Nonaka Date: Fri, 6 Sep 2019 16:34:07 -0700 Subject: [PATCH] don't compute outside of visible range Bug: 140632678 Test: manually done Test: TreeHugger Change-Id: I646851973b3816bf9ba32dfe26748c0345a5a081 --- core/java/android/text/TextLine.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/java/android/text/TextLine.java b/core/java/android/text/TextLine.java index 86651060a3946..5a2d8f4329dca 100644 --- a/core/java/android/text/TextLine.java +++ b/core/java/android/text/TextLine.java @@ -276,6 +276,7 @@ public class TextLine { final int runCount = mDirections.getRunCount(); for (int runIndex = 0; runIndex < runCount; runIndex++) { final int runStart = mDirections.getRunStart(runIndex); + if (runStart >= mLen) break; final int runLimit = Math.min(runStart + mDirections.getRunLength(runIndex), mLen); final boolean runIsRtl = mDirections.isRunRtl(runIndex); @@ -360,6 +361,7 @@ public class TextLine { float h = 0; for (int runIndex = 0; runIndex < mDirections.getRunCount(); runIndex++) { final int runStart = mDirections.getRunStart(runIndex); + if (runStart >= mLen) break; final int runLimit = Math.min(runStart + mDirections.getRunLength(runIndex), mLen); final boolean runIsRtl = mDirections.isRunRtl(runIndex); @@ -417,6 +419,7 @@ public class TextLine { float h = 0; for (int runIndex = 0; runIndex < mDirections.getRunCount(); runIndex++) { final int runStart = mDirections.getRunStart(runIndex); + if (runStart > mLen) break; final int runLimit = Math.min(runStart + mDirections.getRunLength(runIndex), mLen); final boolean runIsRtl = mDirections.isRunRtl(runIndex);