From: Nick Terrell Date: Wed, 13 Mar 2019 21:54:31 +0000 (-0700) Subject: [libzstd] Free local cdict when referencing cdict X-Git-Tag: v1.4.0^2~29^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0594e8135b87e603b7640e58a2b59cbac5b38893;p=thirdparty%2Fzstd.git [libzstd] Free local cdict when referencing cdict We no longer care about the `cdictLocal` after calling `ZSTD_CCtx_refCDict()`, so we should free it to save some memory. --- diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index 3d4091455..8de58b709 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -839,6 +839,9 @@ ZSTDLIB_API size_t ZSTD_CCtx_loadDictionary(ZSTD_CCtx* cctx, const void* dict, s size_t ZSTD_CCtx_refCDict(ZSTD_CCtx* cctx, const ZSTD_CDict* cdict) { RETURN_ERROR_IF(cctx->streamStage != zcss_init, stage_wrong); + /* Free the existing local cdict (if any) to save memory. */ + FORWARD_IF_ERROR( ZSTD_freeCDict(cctx->cdictLocal) ); + cctx->cdictLocal = NULL; cctx->cdict = cdict; memset(&cctx->prefixDict, 0, sizeof(cctx->prefixDict)); /* exclusive */ return 0;