From 484f7b4d64b2ad72c2d6ed9dfe831c57049cca80 Mon Sep 17 00:00:00 2001 From: Riley Jones Date: Wed, 23 Feb 2022 02:09:37 +0000 Subject: [PATCH] Fix for out-of-bound error regarding NoCopySpan objects Bug: 169417148 Change-Id: I2e4a0a3745bb3a53d8f22d4090cdf4d93e19116b Merged-In: I2e4a0a3745bb3a53d8f22d4090cdf4d93e19116b --- .../android/view/accessibility/AccessibilityNodeInfo.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java index 4baad1e95aa83..a20b2b2f79a46 100644 --- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java +++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java @@ -3046,6 +3046,9 @@ public class AccessibilityNodeInfo implements Parcelable { int spanToReplaceStart = spannable.getSpanStart(span); int spanToReplaceEnd = spannable.getSpanEnd(span); int spanToReplaceFlags = spannable.getSpanFlags(span); + if (spanToReplaceStart < 0) { + continue; + } spannable.removeSpan(span); ClickableSpan replacementSpan = (span instanceof URLSpan) ? new AccessibilityURLSpan((URLSpan) span) @@ -3083,6 +3086,9 @@ public class AccessibilityNodeInfo implements Parcelable { int spanToReplaceStart = spannable.getSpanStart(span); int spanToReplaceEnd = spannable.getSpanEnd(span); int spanToReplaceFlags = spannable.getSpanFlags(span); + if (spanToReplaceStart < 0) { + continue; + } spannable.removeSpan(span); ReplacementSpan replacementSpan = new AccessibilityReplacementSpan(replacementText); spannable.setSpan(replacementSpan, spanToReplaceStart, spanToReplaceEnd,