From 3e0550ee5279735693b01464ede7cb1ec22fe6b7 Mon Sep 17 00:00:00 2001 From: daniellerozenblit <48103643+daniellerozenblit@users.noreply.github.com> Date: Tue, 21 Mar 2023 13:28:26 -0400 Subject: [PATCH] fix window update (#3556) --- lib/compress/zstd_compress.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index a475f0c4a..d91f80060 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -4722,6 +4722,7 @@ static size_t ZSTD_loadDictionaryContent(ZSTD_matchState_t* ms, assert(ZSTD_window_isEmpty(ms->window)); if (loadLdmDict) assert(ZSTD_window_isEmpty(ls->window)); } + ZSTD_window_update(&ms->window, src, srcSize, /* forceNonContiguous */ 0); DEBUGLOG(4, "ZSTD_loadDictionaryContent(): useRowMatchFinder=%d", (int)params->useRowMatchFinder); @@ -4733,7 +4734,7 @@ static size_t ZSTD_loadDictionaryContent(ZSTD_matchState_t* ms, /* If the dict is larger than we can reasonably index in our tables, only load the suffix. */ if (params->cParams.strategy < ZSTD_btultra) { - U32 maxDictSize = 8U << MIN(MAX(params->cParams.hashLog, params->cParams.chainLog), 27); + U32 maxDictSize = 8U << MIN(MAX(params->cParams.hashLog, params->cParams.chainLog), 28); if (srcSize > maxDictSize) { ip = iend - maxDictSize; src = ip; @@ -4741,7 +4742,7 @@ static size_t ZSTD_loadDictionaryContent(ZSTD_matchState_t* ms, } } - ZSTD_window_update(&ms->window, src, srcSize, /* forceNonContiguous */ 0); + ms->nextToUpdate = (U32)(ip - ms->window.base); ms->loadedDictEnd = params->forceWindow ? 0 : (U32)(iend - ms->window.base); ms->forceNonContiguous = params->deterministicRefPrefix;