aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java8
-rw-r--r--native/jni/src/suggest/core/session/dic_traverse_session.h2
-rw-r--r--tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOTests.java5
3 files changed, 9 insertions, 6 deletions
diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java
index 58ec1e83f..467f6a053 100644
--- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java
+++ b/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java
@@ -1467,8 +1467,8 @@ public final class BinaryDictInputOutput {
if (null == last) continue;
builder.append(new String(last.mCharacters, 0, last.mCharacters.length));
buffer.position(last.mChildrenAddress + headerSize);
- groupOffset = last.mChildrenAddress + 1;
- i = buffer.readUnsignedByte();
+ i = readCharGroupCount(buffer);
+ groupOffset = last.mChildrenAddress + getGroupCountSize(i);
last = null;
continue;
}
@@ -1477,8 +1477,8 @@ public final class BinaryDictInputOutput {
if (0 == i && hasChildrenAddress(last.mChildrenAddress)) {
builder.append(new String(last.mCharacters, 0, last.mCharacters.length));
buffer.position(last.mChildrenAddress + headerSize);
- groupOffset = last.mChildrenAddress + 1;
- i = buffer.readUnsignedByte();
+ i = readCharGroupCount(buffer);
+ groupOffset = last.mChildrenAddress + getGroupCountSize(i);
last = null;
continue;
}
diff --git a/native/jni/src/suggest/core/session/dic_traverse_session.h b/native/jni/src/suggest/core/session/dic_traverse_session.h
index 525d198cd..a7c042ada 100644
--- a/native/jni/src/suggest/core/session/dic_traverse_session.h
+++ b/native/jni/src/suggest/core/session/dic_traverse_session.h
@@ -134,7 +134,7 @@ class DicTraverseSession {
if (!mDicNodesCache.hasCachedDicNodesForContinuousSuggestion()) {
return false;
}
- ASSERT(mMaxPointerCount < MAX_POINTER_COUNT_G);
+ ASSERT(mMaxPointerCount <= MAX_POINTER_COUNT_G);
for (int i = 0; i < mMaxPointerCount; ++i) {
const ProximityInfoState *const pInfoState = getProximityInfoState(i);
// If a proximity info state is not continuous suggestion possible,
diff --git a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOTests.java b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOTests.java
index bd8729203..6d39d929e 100644
--- a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOTests.java
+++ b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOTests.java
@@ -137,7 +137,10 @@ public class BinaryDictIOTests extends AndroidTestCase {
if (r < 0) continue;
// Don't insert 0~20, but insert any other code point.
// Code points are in the range 0~0x10FFFF.
- builder.appendCodePoint((int)(20 + r % (0x10FFFF - 20)));
+ final int candidateCodePoint = (int)(20 + r % (0x10FFFF - 20));
+ // Code points between 0xD800 and 0xDFFF are not valid.
+ if (candidateCodePoint >= 0xD800 && candidateCodePoint <= 0xDFFF) continue;
+ builder.appendCodePoint(candidateCodePoint);
--count;
}
return builder.toString();