From: Yann Collet Date: Mon, 20 Jun 2016 17:15:37 +0000 (+0200) Subject: new correction, less extreme replacement value X-Git-Tag: v0.7.1~2^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4623d11571b3c17471b95828e1f559813402fdad;p=thirdparty%2Fzstd.git new correction, less extreme replacement value --- diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index 4bb982e6c..964b690ec 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -1186,8 +1186,8 @@ void ZSTD_compressBlock_fast_generic(ZSTD_CCtx* cctx, } } } /* save reps for next block */ - cctx->savedRep[0] = offset_1 ? (U32)offset_1 : (U32)(1 GB); - cctx->savedRep[1] = offset_2 ? (U32)offset_2 : (U32)(1 GB); + cctx->savedRep[0] = offset_1 ? (U32)offset_1 : (U32)(iend-base)+2; + cctx->savedRep[1] = offset_2 ? (U32)offset_2 : (U32)(iend-base)+2; /* Last Literals */ { size_t const lastLLSize = iend - anchor; @@ -1844,7 +1844,7 @@ _storeSequence: /* Save reps for next block */ { int i; for (i=0; ibase) + 2; /* in case some zero are left */ ctx->savedRep[i] = rep[i]; } } @@ -2238,7 +2238,7 @@ static size_t ZSTD_compressContinue_internal (ZSTD_CCtx* zc, /* preemptive overflow correction */ if (zc->lowLimit > (1<<30)) { - U32 const btplus = (zc->params.cParams.strategy == ZSTD_btlazy2) || (zc->params.cParams.strategy == ZSTD_btopt); + U32 const btplus = (zc->params.cParams.strategy == ZSTD_btlazy2) | (zc->params.cParams.strategy == ZSTD_btopt); U32 const chainMask = (1 << (zc->params.cParams.chainLog - btplus)) - 1; U32 const newLowLimit = zc->lowLimit & chainMask; /* preserve position % chainSize */ U32 const correction = zc->lowLimit - newLowLimit;