From 31b54b6eea9051cb44f239ecd9d52b453df8880a Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Tue, 20 Mar 2018 14:52:02 -0700 Subject: [PATCH] updated ZSTD_initStaticDDict() prototype can also specify dictContentType. --- doc/zstd_manual.html | 4 ++-- lib/decompress/zstd_decompress.c | 5 +++-- lib/zstd.h | 3 ++- tests/fuzzer.c | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/doc/zstd_manual.html b/doc/zstd_manual.html index d48250d6e..4daf4d7ed 100644 --- a/doc/zstd_manual.html +++ b/doc/zstd_manual.html @@ -1048,8 +1048,8 @@ size_t ZSTD_CCtx_refPrefix_advanced(ZSTD_CCtx* cctx, const void* prefix, size_t

Advanced parameters for decompression API


size_t ZSTD_DCtx_loadDictionary(ZSTD_DCtx* dctx, const void* dict, size_t dictSize);
-size_t ZSTD_DCtx_loadDictionary_byReference(ZSTD_DCtx* dctx, const void* dict, size_t dictSize);   /* not implemented */
-size_t ZSTD_DCtx_loadDictionary_advanced(ZSTD_DCtx* dctx, const void* dict, size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictMode_e dictMode);   /* not implemented */
+size_t ZSTD_DCtx_loadDictionary_byReference(ZSTD_DCtx* dctx, const void* dict, size_t dictSize);
+size_t ZSTD_DCtx_loadDictionary_advanced(ZSTD_DCtx* dctx, const void* dict, size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictMode_e dictMode);
 

Create an internal DDict from dict buffer, to be used to decompress next frames. @result : 0, or an error code (which can be tested with ZSTD_isError()). diff --git a/lib/decompress/zstd_decompress.c b/lib/decompress/zstd_decompress.c index f0b2cc95b..ca44179ff 100644 --- a/lib/decompress/zstd_decompress.c +++ b/lib/decompress/zstd_decompress.c @@ -2432,7 +2432,8 @@ ZSTD_DDict* ZSTD_createDDict_byReference(const void* dictBuffer, size_t dictSize const ZSTD_DDict* ZSTD_initStaticDDict( void* workspace, size_t workspaceSize, const void* dict, size_t dictSize, - ZSTD_dictLoadMethod_e dictLoadMethod) + ZSTD_dictLoadMethod_e dictLoadMethod, + ZSTD_dictMode_e dictContentType) { size_t const neededSpace = sizeof(ZSTD_DDict) + (dictLoadMethod == ZSTD_dlm_byRef ? 0 : dictSize); @@ -2445,7 +2446,7 @@ const ZSTD_DDict* ZSTD_initStaticDDict( memcpy(ddict+1, dict, dictSize); /* local copy */ dict = ddict+1; } - if (ZSTD_isError( ZSTD_initDDict_internal(ddict, dict, dictSize, ZSTD_dlm_byRef, ZSTD_dm_auto) )) + if (ZSTD_isError( ZSTD_initDDict_internal(ddict, dict, dictSize, ZSTD_dlm_byRef, dictContentType) )) return NULL; return ddict; } diff --git a/lib/zstd.h b/lib/zstd.h index 8a927f427..278ed7247 100644 --- a/lib/zstd.h +++ b/lib/zstd.h @@ -580,7 +580,8 @@ ZSTDLIB_API const ZSTD_CDict* ZSTD_initStaticCDict( ZSTDLIB_API const ZSTD_DDict* ZSTD_initStaticDDict( void* workspace, size_t workspaceSize, const void* dict, size_t dictSize, - ZSTD_dictLoadMethod_e dictLoadMethod); + ZSTD_dictLoadMethod_e dictLoadMethod, + ZSTD_dictMode_e dictMode); /*! Custom memory allocation : * These prototypes make it possible to pass your own allocation/free functions. diff --git a/tests/fuzzer.c b/tests/fuzzer.c index cae509707..9b7553ba5 100644 --- a/tests/fuzzer.c +++ b/tests/fuzzer.c @@ -649,7 +649,7 @@ static int basicUnitTests(U32 seed, double compressibility) { size_t const ddictBufferSize = ZSTD_estimateDDictSize(dictSize, ZSTD_dlm_byCopy); void* ddictBuffer = malloc(ddictBufferSize); if (ddictBuffer == NULL) goto _output_error; - { const ZSTD_DDict* const ddict = ZSTD_initStaticDDict(ddictBuffer, ddictBufferSize, CNBuffer, dictSize, ZSTD_dlm_byCopy); + { const ZSTD_DDict* const ddict = ZSTD_initStaticDDict(ddictBuffer, ddictBufferSize, CNBuffer, dictSize, ZSTD_dlm_byCopy, ZSTD_dm_auto); size_t const r = ZSTD_decompress_usingDDict(dctx, decodedBuffer, CNBuffSize, compressedBuffer, cSize, ddict); if (r != CNBuffSize - dictSize) goto _output_error; }