diff options
author | 2012-09-18 02:11:24 -0700 | |
---|---|---|
committer | 2012-09-18 02:11:24 -0700 | |
commit | 23af2a47bd1532d3ff5490425246efb21a864369 (patch) | |
tree | 66438b332db40ce530f62a2d90d2a3f910868c43 /java/src | |
parent | 780bc96c9f800edcbdd898496238a905373babee (diff) | |
parent | eb501f26c1615b4e0572767f85faa3ec0636a21b (diff) | |
download | latinime-23af2a47bd1532d3ff5490425246efb21a864369.tar.gz latinime-23af2a47bd1532d3ff5490425246efb21a864369.tar.xz latinime-23af2a47bd1532d3ff5490425246efb21a864369.zip |
am eb501f26: am ed471316: Merge "Fix a bug with surrogate characters" into jb-mr1-dev
* commit 'eb501f26c1615b4e0572767f85faa3ec0636a21b':
Fix a bug with surrogate characters
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java b/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java index 6775de8a8..98cf308c8 100644 --- a/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java +++ b/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java @@ -556,6 +556,7 @@ public class FusionDictionary implements Iterable<Word> { final StringBuilder checker = DBG ? new StringBuilder() : null; CharGroup currentGroup; + final int codePointCountInS = s.codePointCount(0, s.length()); do { int indexOfGroup = findIndexOfChar(node, s.codePointAt(index)); if (CHARACTER_NOT_FOUND == indexOfGroup) return null; @@ -570,12 +571,12 @@ public class FusionDictionary implements Iterable<Word> { index = newIndex; if (DBG) checker.append(new String(currentGroup.mChars, 0, currentGroup.mChars.length)); - if (index < s.length()) { + if (index < codePointCountInS) { node = currentGroup.mChildren; } - } while (null != node && index < s.length()); + } while (null != node && index < codePointCountInS); - if (index < s.length()) return null; + if (index < codePointCountInS) return null; if (!currentGroup.isTerminal()) return null; if (DBG && !s.equals(checker.toString())) return null; return currentGroup; |