Skip to content
Snippets Groups Projects
Commit f6b7c3a6 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi Committed by Android (Google) Code Review
Browse files

Merge "Fix parent position reading for ver3 dict."

parents 769aefe0 b2408c7f
No related branches found
No related tags found
No related merge requests found
...@@ -27,7 +27,9 @@ void DynamicPatriciaTrieNodeReader::fetchNodeInfoFromBufferAndProcessMovedNode(c ...@@ -27,7 +27,9 @@ void DynamicPatriciaTrieNodeReader::fetchNodeInfoFromBufferAndProcessMovedNode(c
const uint8_t *const dictRoot = mBinaryDictionaryInfo->getDictRoot(); const uint8_t *const dictRoot = mBinaryDictionaryInfo->getDictRoot();
int pos = nodePos; int pos = nodePos;
mFlags = PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(dictRoot, &pos); mFlags = PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(dictRoot, &pos);
mParentPos = DynamicPatriciaTrieReadingUtils::getParentPosAndAdvancePosition(dictRoot, &pos); const int parentPos =
DynamicPatriciaTrieReadingUtils::getParentPosAndAdvancePosition(dictRoot, &pos);
mParentPos = (parentPos != 0) ? mNodePos + parentPos : NOT_A_DICT_POS;
if (outCodePoints != 0) { if (outCodePoints != 0) {
mCodePointCount = PatriciaTrieReadingUtils::getCharsAndAdvancePosition( mCodePointCount = PatriciaTrieReadingUtils::getCharsAndAdvancePosition(
dictRoot, mFlags, maxCodePointCount, outCodePoints, &pos); dictRoot, mFlags, maxCodePointCount, outCodePoints, &pos);
......
...@@ -94,7 +94,7 @@ int DynamicPatriciaTriePolicy::getCodePointsAndProbabilityAndReturnCodePointCoun ...@@ -94,7 +94,7 @@ int DynamicPatriciaTriePolicy::getCodePointsAndProbabilityAndReturnCodePointCoun
reverseCodePoints[codePointCount++] = mergedNodeCodePoints[i]; reverseCodePoints[codePointCount++] = mergedNodeCodePoints[i];
} }
// Then, follow parent pos toward the root node. // Then, follow parent pos toward the root node.
while (nodeReader.getParentPos() != getRootPosition()) { while (nodeReader.getParentPos() != NOT_A_DICT_POS) {
// codePointCount must be incremented at least once in each iteration to ensure preventing // codePointCount must be incremented at least once in each iteration to ensure preventing
// infinite loop. // infinite loop.
if (nodeReader.isDeleted() || codePointCount > maxCodePointCount if (nodeReader.isDeleted() || codePointCount > maxCodePointCount
......
...@@ -39,8 +39,7 @@ class DynamicPatriciaTrieReadingUtils { ...@@ -39,8 +39,7 @@ class DynamicPatriciaTrieReadingUtils {
static AK_FORCE_INLINE int getParentPosAndAdvancePosition(const uint8_t *const buffer, static AK_FORCE_INLINE int getParentPosAndAdvancePosition(const uint8_t *const buffer,
int *const pos) { int *const pos) {
const int base = *pos; return ByteArrayUtils::readSint24AndAdvancePosition(buffer, pos);
return base + ByteArrayUtils::readSint24AndAdvancePosition(buffer, pos);
} }
static int readChildrenPositionAndAdvancePosition(const uint8_t *const buffer, static int readChildrenPositionAndAdvancePosition(const uint8_t *const buffer,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment