Loading java/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java +9 −2 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading
java/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java +9 −2 Original line number Diff line number Diff line Loading @@ -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; } Loading