Shift Dict Limit Checks out of the Loop

This commit is contained in:
W. Felix Handte 2018-03-28 12:26:54 -04:00
parent 4f7b7a8ffa
commit 22db704a73

View File

@ -294,11 +294,11 @@ LZ4HC_InsertAndGetWiderMatch (
} } } }
} /* while ((matchIndex>=lowLimit) && (matchIndex < (ip - base)) && (nbAttempts)) */
if (dictCtx != NULL && nbAttempts) {
if (dictCtx != NULL && nbAttempts && ip - base - lowLimit < MAX_DISTANCE) {
ptrdiff_t dictIndexDelta = dictCtx->base - dictCtx->end + lowLimit;
dictMatchIndex = dictCtx->hashTable[LZ4HC_hashPtr(ip)];
matchIndex = dictMatchIndex + dictIndexDelta;
while (dictMatchIndex >= dictCtx->dictLimit && dictMatchIndex + dictCtx->base < dictCtx->end && dictMatchIndex + MAX_DISTANCE > ip - base - dictIndexDelta && nbAttempts--) {
while (dictMatchIndex + MAX_DISTANCE > ip - base - dictIndexDelta && nbAttempts--) {
const BYTE* const matchPtr = dictCtx->base + dictMatchIndex;
if (LZ4_read32(matchPtr) == pattern) {