Fix Ver4DictDecoder.readAndFollowForwardLink().

Change-Id: Ib527a376b693be21aebd4920ac804ee9b161eb96
main
Yuichiro Hanada 2013-10-16 17:16:26 +09:00
parent 008d84ffa5
commit 7b5f2b71f5
1 changed files with 7 additions and 4 deletions

View File

@ -319,10 +319,13 @@ public class Ver4DictDecoder extends AbstractDictDecoder {
@Override
public boolean readAndFollowForwardLink() {
final int forwardLinkPos = mDictBuffer.position();
final int nextAddress = forwardLinkPos + BinaryDictDecoderUtils.readSInt24(mDictBuffer);
if (nextAddress >= 0 && nextAddress < mDictBuffer.limit()) {
mDictBuffer.position(nextAddress);
return true;
int nextRelativePos = BinaryDictDecoderUtils.readSInt24(mDictBuffer);
if (nextRelativePos != FormatSpec.NO_FORWARD_LINK_ADDRESS) {
final int nextPos = forwardLinkPos + nextRelativePos;
if (nextPos >= 0 && nextPos < mDictBuffer.limit()) {
mDictBuffer.position(nextPos);
return true;
}
}
return false;
}