aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
diff options
context:
space:
mode:
authorTom Ouyang <ouyang@google.com>2015-02-24 10:30:27 -0800
committerTom Ouyang <ouyang@google.com>2015-02-24 11:30:42 -0800
commitedb2d2380214fa3a6d5416cc916f58360214d123 (patch)
tree233f4e73077de4c764982fe3788b772ed39c46aa /java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
parent1d5ec6136cf2d2c84453120407957ddb64c7b2b7 (diff)
downloadlatinime-edb2d2380214fa3a6d5416cc916f58360214d123.tar.gz
latinime-edb2d2380214fa3a6d5416cc916f58360214d123.tar.xz
latinime-edb2d2380214fa3a6d5416cc916f58360214d123.zip
Check for null TextRange in InputLogic.unlearnWordBeingDeleted
Change-Id: Ia0df0ab740c76185f94966f59a74a6ebdd1cffe8
Diffstat (limited to 'java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java')
-rw-r--r--java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java13
1 files changed, 9 insertions, 4 deletions
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index 56be23f5b..c465f6c0b 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -1094,8 +1094,8 @@ public final class InputLogic {
int totalDeletedLength = 1;
if (mDeleteCount > Constants.DELETE_ACCELERATE_AT) {
// If this is an accelerated (i.e., double) deletion, then we need to
- // consider unlearning here too because we may have just entered the
- // previous word, and the next deletion will currupt it.
+ // consider unlearning here because we may have already reached
+ // the previous word, and will lose it after next deletion.
hasUnlearnedWordBeingDeleted |= unlearnWordBeingDeleted(
inputTransaction.mSettingsValues, currentKeyboardScriptId);
sendDownUpKeyEvent(KeyEvent.KEYCODE_DEL);
@@ -1121,8 +1121,8 @@ public final class InputLogic {
int totalDeletedLength = lengthToDelete;
if (mDeleteCount > Constants.DELETE_ACCELERATE_AT) {
// If this is an accelerated (i.e., double) deletion, then we need to
- // consider unlearning here too because we may have just entered the
- // previous word, and the next deletion will currupt it.
+ // consider unlearning here because we may have already reached
+ // the previous word, and will lose it after next deletion.
hasUnlearnedWordBeingDeleted |= unlearnWordBeingDeleted(
inputTransaction.mSettingsValues, currentKeyboardScriptId);
final int codePointBeforeCursorToDeleteAgain =
@@ -1166,6 +1166,11 @@ public final class InputLogic {
final TextRange range = mConnection.getWordRangeAtCursor(
settingsValues.mSpacingAndPunctuations,
currentKeyboardScriptId);
+ if (range == null) {
+ // TODO(zivkovic): Check for bad connection before getting this far.
+ // Happens if we don't have an input connection at all.
+ return false;
+ }
final String wordBeingDeleted = range.mWord.toString();
if (!wordBeingDeleted.isEmpty()) {
unlearnWord(wordBeingDeleted, settingsValues,