Skip to content
Snippets Groups Projects
Commit 5a9d8757 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi Committed by Android Git Automerger
Browse files

am f6b7c3a6: Merge "Fix parent position reading for ver3 dict."

* commit 'f6b7c3a6':
  Fix parent position reading for ver3 dict.
parents 3cd6811e f6b7c3a6
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