Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d0c87576 authored by Yuichiro Hanada's avatar Yuichiro Hanada
Browse files

Fix getChildrenPosition.

Change-Id: Ic39592dbf0d4e6d2e4879cdb1a95b65d46a57e92
parent 72e53a1e
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -758,9 +758,16 @@ public class BinaryDictEncoderUtils {
            final FormatOptions formatOptions) {
        int positionOfChildrenPosField = ptNode.mCachedAddressAfterUpdate
                + getNodeHeaderSize(ptNode, formatOptions);
        if (ptNode.mFrequency >= 0) {
        if (ptNode.isTerminal()) {
            // A terminal node has either the terminal id or the frequency.
            // If positionOfChildrenPosField is incorrect, we may crash when jumping to the children
            // position.
            if (formatOptions.mHasTerminalId) {
                positionOfChildrenPosField += FormatSpec.PTNODE_TERMINAL_ID_SIZE;
            } else {
                positionOfChildrenPosField += FormatSpec.PTNODE_FREQUENCY_SIZE;
            }
        }
        return null == ptNode.mChildren ? FormatSpec.NO_CHILDREN_ADDRESS
                : ptNode.mChildren.mCachedAddressAfterUpdate - positionOfChildrenPosField;
    }