From 14ed50a9a3386e63ee19f6ac0b66c7f3c0fe362a Mon Sep 17 00:00:00 2001 From: Gilles Debunne Date: Fri, 23 Sep 2011 10:56:24 -0700 Subject: [PATCH] Bug 5332065: IOOB in case the suggestionSpan has been removed I don't understand how the SuggSpan that has been tapped to display the popup can have disappeared when an item is clicked. This problem seems specific to monkey test with a race condition somewhere. Change-Id: I447b6563a1b959dc3c1ead31cde2d9bcad369765 --- core/java/android/widget/TextView.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index d680f36c31899..e1f94ac3b44b0 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -9879,6 +9879,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener @Override public void onItemClick(AdapterView parent, View view, int position, long id) { + hide(); + if (view instanceof TextView) { TextView textView = (TextView) view; Editable editable = (Editable) mText; @@ -9886,6 +9888,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener SuggestionInfo suggestionInfo = mSuggestionInfos[position]; final int spanStart = editable.getSpanStart(suggestionInfo.suggestionSpan); final int spanEnd = editable.getSpanEnd(suggestionInfo.suggestionSpan); + if (spanStart < 0 || spanEnd < 0) return; // Span has been removed final String originalText = mText.subSequence(spanStart, spanEnd).toString(); if (suggestionInfo.suggestionIndex < 0) { @@ -9947,7 +9950,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener Selection.setSelection(editable, spanEnd + lengthDifference); } } - hide(); } }