From: Yann Collet Date: Wed, 28 Dec 2022 21:14:58 +0000 (-0800) Subject: Signal parameter change during MT compression X-Git-Tag: v1.5.4^2~71^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F3403%2Fhead;p=thirdparty%2Fzstd.git Signal parameter change during MT compression --- diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index f35f7a7a6..fee502984 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -664,7 +664,7 @@ size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, int value) if (ZSTD_isUpdateAuthorized(param)) { cctx->cParamsChanged = 1; } else { - RETURN_ERROR(stage_wrong, "can only set params in ctx init stage"); + RETURN_ERROR(stage_wrong, "can only set params in cctx init stage"); } } switch(param) @@ -1103,8 +1103,15 @@ size_t ZSTD_CCtx_setParametersUsingCCtxParams( size_t ZSTD_CCtx_setCParams(ZSTD_CCtx* cctx, ZSTD_compressionParameters cparams) { - FORWARD_IF_ERROR(ZSTD_checkCParams(cparams), ""); + DEBUGLOG(4, "ZSTD_CCtx_setCParams"); assert(cctx != NULL); + if (cctx->streamStage != zcss_init) { + /* All parameters in @cparams are allowed to be updated during MT compression. + * This must be signaled, so that MT compression picks up the changes */ + cctx->cParamsChanged = 1; + } + /* only update if parameters are valid */ + FORWARD_IF_ERROR(ZSTD_checkCParams(cparams), ""); cctx->requestedParams.cParams = cparams; return 0; }