From: W. Felix Handte Date: Thu, 21 Jun 2018 19:24:08 +0000 (-0400) Subject: Fix `dmsBtLow` Test X-Git-Tag: v1.3.5~3^2~10^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3caba150c6e962cf7f1efd5ad76b6bc6ef374781;p=thirdparty%2Fzstd.git Fix `dmsBtLow` Test --- diff --git a/lib/compress/zstd_lazy.c b/lib/compress/zstd_lazy.c index 078d20360..bfe944928 100644 --- a/lib/compress/zstd_lazy.c +++ b/lib/compress/zstd_lazy.c @@ -166,7 +166,7 @@ static size_t ZSTD_DUBT_findBetterDictMatch ( U32* const dictBt = dms->chainTable; U32 const btLog = cParams->chainLog - 1; U32 const btMask = (1 << btLog) - 1; - U32 const btLow = (btMask >= dictHighLimit - dictLowLimit) ? 0 : dictHighLimit - btMask; + U32 const btLow = (btMask >= dictHighLimit - dictLowLimit) ? dictLowLimit : dictHighLimit - btMask; size_t commonLengthSmaller=0, commonLengthLarger=0; U32 matchEndIdx = current+8+1; diff --git a/lib/compress/zstd_opt.c b/lib/compress/zstd_opt.c index 1d0ca9ca4..3f7023f78 100644 --- a/lib/compress/zstd_opt.c +++ b/lib/compress/zstd_opt.c @@ -532,7 +532,7 @@ U32 ZSTD_insertBtAndGetAllMatches ( U32 const dmsHighLimit = dictMode == ZSTD_dictMatchState ? (U32)(dmsEnd - dmsBase) : 0; U32 const dmsLowLimit = dictMode == ZSTD_dictMatchState ? dms->window.lowLimit : 0; U32 const dmsIndexDelta = dictMode == ZSTD_dictMatchState ? windowLow - dmsHighLimit : 0; - U32 const dmsBtLow = dictMode == ZSTD_dictMatchState || btMask >= dmsHighLimit ? 0 : dmsHighLimit - btMask; + U32 const dmsBtLow = dictMode == ZSTD_dictMatchState && btMask < dmsHighLimit - dmsLowLimit ? dmsHighLimit - btMask : dmsLowLimit; size_t bestLength = lengthToBeat-1; DEBUGLOG(8, "ZSTD_insertBtAndGetAllMatches: current=%u", current);