From 2616a431e77a8f1139098e4d0350cd73701b6936 Mon Sep 17 00:00:00 2001 From: Qi Wang Date: Fri, 16 Apr 2021 12:48:42 +0800 Subject: [PATCH] Fix a bug in SpellCheckerService. Previously, the returned value of WordIterator#following is used without checking, which will cause fatal error when it's WordIterator.DONE. Fix: 184915852 Test: atest CtsInputMethodTestCases:SpellCheckerTest Change-Id: I37418bb36bc49e7dfa729ffb7209a6f383b611dd --- core/java/android/service/textservice/SpellCheckerService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/java/android/service/textservice/SpellCheckerService.java b/core/java/android/service/textservice/SpellCheckerService.java index e4925842ad85c..45f974354c8aa 100644 --- a/core/java/android/service/textservice/SpellCheckerService.java +++ b/core/java/android/service/textservice/SpellCheckerService.java @@ -421,7 +421,8 @@ public abstract class SpellCheckerService extends Service { final ArrayList wordItems = new ArrayList(); wordIterator.setCharSequence(originalText, 0, originalText.length()); int wordEnd = wordIterator.following(start); - int wordStart = wordIterator.getBeginning(wordEnd); + int wordStart = wordEnd == BreakIterator.DONE ? BreakIterator.DONE + : wordIterator.getBeginning(wordEnd); if (DBG) { Log.d(TAG, "iterator: break: ---- 1st word start = " + wordStart + ", end = " + wordEnd + "\n" + originalText);