summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author satok <satok@google.com> 2012-05-11 11:57:48 +0900
committer satok <satok@google.com> 2012-05-11 12:56:13 +0900
commit37e169cd1429c76a0223d8fdd77622ead718bbff (patch)
treed0baa4a4e00d0e29cf768e6eb62ddcfbb0703f68
parentfa61f0b2e25382d3a8ea35024dd227606151e87a (diff)
Add a safety net to set range span in the spell checker
Bug: 6476578 Change-Id: I60ad82f80770dcb67fd9663dac64dc81634d7014
-rw-r--r--core/java/android/widget/SpellChecker.java14
1 files changed, 12 insertions, 2 deletions
diff --git a/core/java/android/widget/SpellChecker.java b/core/java/android/widget/SpellChecker.java
index ebf8a4a8f0dc..6584384ee780 100644
--- a/core/java/android/widget/SpellChecker.java
+++ b/core/java/android/widget/SpellChecker.java
@@ -473,8 +473,16 @@ public class SpellChecker implements SpellCheckerSessionListener {
private Object mRange = new Object();
public void parse(int start, int end) {
- if (end > start) {
- setRangeSpan((Editable) mTextView.getText(), start, end);
+ final int max = mTextView.length();
+ final int parseEnd;
+ if (end > max) {
+ Log.w(TAG, "Parse invalid region, from " + start + " to " + end);
+ parseEnd = max;
+ } else {
+ parseEnd = end;
+ }
+ if (parseEnd > start) {
+ setRangeSpan((Editable) mTextView.getText(), start, parseEnd);
parse();
}
}
@@ -612,6 +620,8 @@ public class SpellChecker implements SpellCheckerSessionListener {
break;
}
if (spellCheckEnd <= spellCheckStart) {
+ Log.w(TAG, "Trying to spellcheck invalid region, from "
+ + start + " to " + end);
break;
}
if (createSpellCheckSpan) {