diff options
author | 2012-08-16 05:08:42 -0700 | |
---|---|---|
committer | 2012-08-16 05:08:42 -0700 | |
commit | edfe6c4d1448ea8f4686f60ac3b4b5000fc4d999 (patch) | |
tree | 5db74a059e5c448b861ce8352b9285e41f2b433d /java/src | |
parent | 39a2cee68d81ce7c5a4be577faf0d0e3cdd0bd8f (diff) | |
parent | 5b0c0e5519918d52db72f522336080ed8e9311b0 (diff) | |
download | latinime-edfe6c4d1448ea8f4686f60ac3b4b5000fc4d999.tar.gz latinime-edfe6c4d1448ea8f4686f60ac3b4b5000fc4d999.tar.xz latinime-edfe6c4d1448ea8f4686f60ac3b4b5000fc4d999.zip |
am 5b0c0e55: am bc44ad77: Merge "fix findWordInTree." into jb-mr1-dev
* commit '5b0c0e5519918d52db72f522336080ed8e9311b0':
fix findWordInTree.
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java | 11 |
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; } |