diff options
| author | 2012-05-11 11:57:48 +0900 | |
|---|---|---|
| committer | 2012-05-11 12:56:13 +0900 | |
| commit | 37e169cd1429c76a0223d8fdd77622ead718bbff (patch) | |
| tree | d0baa4a4e00d0e29cf768e6eb62ddcfbb0703f68 | |
| parent | fa61f0b2e25382d3a8ea35024dd227606151e87a (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.java | 14 |
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) { |