[lz4hc] Fix minor pessimization in extDict pattern matching
authorNick Terrell <terrelln@fb.com>
Tue, 30 Jul 2019 22:21:52 +0000 (15:21 -0700)
committerNick Terrell <terrelln@fb.com>
Wed, 31 Jul 2019 17:16:25 +0000 (10:16 -0700)
We should be comparing `matchPtr` not `ip`. This bug just means
that this branch was not taken, so we might miss some of the
forward length.

lib/lz4hc.c

index 4122af4..a0b8c48 100644 (file)
@@ -335,7 +335,7 @@ LZ4HC_InsertAndGetWiderMatch (
                         const BYTE* const dictStart = dictBase + hc4->lowLimit;
                         const BYTE* const iLimit = extDict ? dictBase + dictLimit : iHighLimit;
                         size_t forwardPatternLength = LZ4HC_countPattern(matchPtr+sizeof(pattern), iLimit, pattern) + sizeof(pattern);
-                        if (extDict && ip + forwardPatternLength == iLimit) {
+                        if (extDict && matchPtr + forwardPatternLength == iLimit) {
                             U32 const rotatedPattern = LZ4HC_rotatePattern(forwardPatternLength, pattern);
                             forwardPatternLength += LZ4HC_countPattern(lowPrefixPtr, iHighLimit, rotatedPattern);
                         }