From 6c1c1242fce69018710d30c785285f0cbaa850cc Mon Sep 17 00:00:00 2001 From: Paul Cruz Date: Wed, 26 Jul 2017 14:29:59 -0700 Subject: [PATCH] set the window log value before performing compression --- contrib/adaptive-compression/adapt.c | 16 ++++++++++------ contrib/adaptive-compression/test-correctness.sh | 5 +++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/contrib/adaptive-compression/adapt.c b/contrib/adaptive-compression/adapt.c index 237bb4306..5ff2e4181 100644 --- a/contrib/adaptive-compression/adapt.c +++ b/contrib/adaptive-compression/adapt.c @@ -513,12 +513,16 @@ static void* compressionThread(void* arg) { size_t const useDictSize = MIN(getUseableDictSize(cLevel), job->dictSize); size_t const dictModeError = ZSTD_setCCtxParameter(ctx->cctx, ZSTD_p_forceRawDict, 1); - size_t const initError = ZSTD_compressBegin_usingDict(ctx->cctx, job->src.start + job->dictSize - useDictSize, useDictSize, cLevel); - size_t const windowSizeError = ZSTD_setCCtxParameter(ctx->cctx, ZSTD_p_forceWindow, 1); - if (ZSTD_isError(dictModeError) || ZSTD_isError(initError) || ZSTD_isError(windowSizeError)) { - DISPLAY("Error: something went wrong while starting compression\n"); - signalErrorToThreads(ctx); - return arg; + ZSTD_parameters params = ZSTD_getParams(cLevel, 0, useDictSize); + params.cParams.windowLog = 23; + { + size_t const initError = ZSTD_compressBegin_advanced(ctx->cctx, job->src.start + job->dictSize - useDictSize, useDictSize, params, 0); + size_t const windowSizeError = ZSTD_setCCtxParameter(ctx->cctx, ZSTD_p_forceWindow, 1); + if (ZSTD_isError(dictModeError) || ZSTD_isError(initError) || ZSTD_isError(windowSizeError)) { + DISPLAY("Error: something went wrong while starting compression\n"); + signalErrorToThreads(ctx); + return arg; + } } } DEBUG(2, "finished with ZSTD_compressBegin()\n"); diff --git a/contrib/adaptive-compression/test-correctness.sh b/contrib/adaptive-compression/test-correctness.sh index 86d39ee4f..8ae6604af 100755 --- a/contrib/adaptive-compression/test-correctness.sh +++ b/contrib/adaptive-compression/test-correctness.sh @@ -237,4 +237,9 @@ rm tmp* zstd -d tmp.zst -o tmp2 diff -s -q tmp tmp2 rm tmp* + +echo -e "\ncorrectness tests -- window size test" +./datagen -s39 -g1GB | pv -L 25m -q | ./adapt -i1 | pv -q > tmp.zst +zstd -d tmp.zst +rm tmp* make clean