• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

frameworks/base


Commit MetaInfo

Revisión434f2bce706b209a0f6d8c45a0be13891abe18e9 (tree)
Tiempo2019-12-09 00:21:19
AutorSeigo Nonaka <nona@goog...>
CommiterVasyl Gello

Log Message

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

Cambiar Resumen

Diferencia incremental

--- a/core/java/android/text/TextLine.java
+++ b/core/java/android/text/TextLine.java
@@ -208,6 +208,7 @@ class TextLine {
208208 int lastRunIndex = runs.length - 2;
209209 for (int i = 0; i < runs.length; i += 2) {
210210 int runStart = runs[i];
211+ if (runStart > mLen) break;
211212 int runLimit = runStart + (runs[i+1] & Layout.RUN_LENGTH_MASK);
212213 if (runLimit > mLen) {
213214 runLimit = mLen;
@@ -285,6 +286,7 @@ class TextLine {
285286 int[] runs = mDirections.mDirections;
286287 for (int i = 0; i < runs.length; i += 2) {
287288 int runStart = runs[i];
289+ if (runStart > mLen) break;
288290 int runLimit = runStart + (runs[i+1] & Layout.RUN_LENGTH_MASK);
289291 if (runLimit > mLen) {
290292 runLimit = mLen;
@@ -374,6 +376,7 @@ class TextLine {
374376 int[] runs = mDirections.mDirections;
375377 for (int i = 0; i < runs.length; i += 2) {
376378 int runStart = runs[i];
379+ if (runStart > mLen) break;
377380 int runLimit = runStart + (runs[i + 1] & Layout.RUN_LENGTH_MASK);
378381 if (runLimit > mLen) {
379382 runLimit = mLen;