diff --git a/src/shrink.c b/src/shrink.c index 6a091a2..cd6fa9c 100755 --- a/src/shrink.c +++ b/src/shrink.c @@ -35,10 +35,10 @@ #include "shrink.h" #include "format.h" -#define LCP_BITS 14 -#define LCP_MAX ((1<= LCP_MAX && pMatch->offset == 1 && - pCompressor->match[(i + nMatchLen) << MATCHES_PER_OFFSET_SHIFT].offset == 1 && - (nMatchLen + pCompressor->match[(i + nMatchLen) << MATCHES_PER_OFFSET_SHIFT].length) <= 65535) { + if ((i + nMatchLen) < nEndOffset && nMatchLen >= LCP_MAX && + pMatch->offset && pMatch->offset <= 32 && pCompressor->match[(i + nMatchLen) << MATCHES_PER_OFFSET_SHIFT].offset == pMatch->offset && (nMatchLen % pMatch->offset) == 0 && + (nMatchLen + pCompressor->match[(i + nMatchLen) << MATCHES_PER_OFFSET_SHIFT].length) <= MAX_OFFSET) { /* Join */ pMatch->length += pCompressor->match[(i + nMatchLen) << MATCHES_PER_OFFSET_SHIFT].length;