aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
diff options
context:
space:
mode:
authorKen Wakasa <kwakasa@google.com>2012-08-16 04:59:05 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-08-16 04:59:05 -0700
commit5b0c0e5519918d52db72f522336080ed8e9311b0 (patch)
tree1e5302d524b1391a9e2380fc9631fafc8f1ca107 /java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
parent0acb13266988c1c582f1ce2ba26252e76702b607 (diff)
parentbc44ad77e50a9f5ca2dab2c5153971b23c33fa2c (diff)
downloadlatinime-5b0c0e5519918d52db72f522336080ed8e9311b0.tar.gz
latinime-5b0c0e5519918d52db72f522336080ed8e9311b0.tar.xz
latinime-5b0c0e5519918d52db72f522336080ed8e9311b0.zip
am bc44ad77: Merge "fix findWordInTree." into jb-mr1-dev
* commit 'bc44ad77e50a9f5ca2dab2c5153971b23c33fa2c': fix findWordInTree.
Diffstat (limited to 'java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java')
-rw-r--r--java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java b/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
index 5864db28e..260155174 100644
--- a/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
+++ b/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
@@ -516,13 +516,22 @@ public class FusionDictionary implements Iterable<Word> {
int indexOfGroup = findIndexOfChar(node, s.codePointAt(index));
if (CHARACTER_NOT_FOUND == indexOfGroup) return null;
currentGroup = node.mData.get(indexOfGroup);
+
+ if (s.length() - index < currentGroup.mChars.length) return null;
+ int newIndex = index;
+ while (newIndex < s.length() && newIndex - index < currentGroup.mChars.length) {
+ if (currentGroup.mChars[newIndex - index] != s.codePointAt(newIndex)) return null;
+ newIndex++;
+ }
+ index = newIndex;
+
if (DBG) checker.append(new String(currentGroup.mChars, 0, currentGroup.mChars.length));
- index += currentGroup.mChars.length;
if (index < s.length()) {
node = currentGroup.mChildren;
}
} while (null != node && index < s.length());
+ if (index < s.length()) return null;
if (DBG && !s.equals(checker.toString())) return null;
return currentGroup;
}