aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorYuichiro Hanada <yhanada@google.com>2012-08-16 19:23:56 +0900
committerYuichiro Hanada <yhanada@google.com>2012-08-16 20:21:47 +0900
commit66f338983bb9cb04a0d94a4729330b1c8ff01c93 (patch)
tree91a8e28a62e54fdee4c824efe678f59ef9161642 /java/src
parent05384933097c1e9c35e8be5c03757d072e5ffa46 (diff)
downloadlatinime-66f338983bb9cb04a0d94a4729330b1c8ff01c93.tar.gz
latinime-66f338983bb9cb04a0d94a4729330b1c8ff01c93.tar.xz
latinime-66f338983bb9cb04a0d94a4729330b1c8ff01c93.zip
fix findWordInTree.
Change-Id: I9d81c815494a0670afa81219ad7bad82274d997e
Diffstat (limited to 'java/src')
-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;
}