From 7b5f2b71f5ce8af82b4c0faad38437bca750cffe Mon Sep 17 00:00:00 2001
From: Yuichiro Hanada <yhanada@google.com>
Date: Wed, 16 Oct 2013 17:16:26 +0900
Subject: [PATCH] Fix Ver4DictDecoder.readAndFollowForwardLink().

Change-Id: Ib527a376b693be21aebd4920ac804ee9b161eb96
---
 .../inputmethod/latin/makedict/Ver4DictDecoder.java   | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java b/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
index cc6a545694..a94e04a8e8 100644
--- a/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
+++ b/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
@@ -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;
     }
-- 
GitLab