From 0594e8135b87e603b7640e58a2b59cbac5b38893 Mon Sep 17 00:00:00 2001 From: Nick Terrell Date: Wed, 13 Mar 2019 14:54:31 -0700 Subject: [PATCH] [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. --- lib/compress/zstd_compress.c | 3 +++ 1 file changed, 3 insertions(+) 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; -- 2.47.2