diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index 62c1c6cdd..0ce2054fc 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -3077,7 +3077,8 @@ static size_t ZSTD_initCStream_stage2(ZSTD_CStream* zcs, size_t ZSTD_initCStream_usingCDict(ZSTD_CStream* zcs, const ZSTD_CDict* cdict) { if (!cdict) return ERROR(GENERIC); /* cannot handle NULL cdict (does not know what to do) */ - { ZSTD_parameters const params = ZSTD_getParamsFromCDict(cdict); + { ZSTD_parameters params = ZSTD_getParamsFromCDict(cdict); + params.fParams.contentSizeFlag = 0; zcs->cdict = cdict; return ZSTD_initCStream_stage2(zcs, params, 0); } diff --git a/tests/zstreamtest.c b/tests/zstreamtest.c index 6f26ea555..ac200a7a6 100644 --- a/tests/zstreamtest.c +++ b/tests/zstreamtest.c @@ -448,10 +448,11 @@ static int basicUnitTests(U32 seed, double compressibility, ZSTD_customMem custo if (!ZSTD_isError(r)) goto _output_error; /* must fail : frame requires > 100 bytes */ DISPLAYLEVEL(3, "OK (%s)\n", ZSTD_getErrorName(r)); } - DISPLAYLEVEL(3, "test%3i : check dictionary used : ", testNb++); + DISPLAYLEVEL(3, "test%3i : dictionary compression with masked dictID : ", testNb++); { ZSTD_parameters params = ZSTD_getParams(1, CNBufferSize, dictionary.filled); ZSTD_CDict* cdict; params.fParams.noDictIDFlag = 1; + params.fParams.contentSizeFlag = 1; /* test contentSize, should be disabled with initCStream_usingCDict */ cdict = ZSTD_createCDict_advanced(dictionary.start, dictionary.filled, 1, params, customMem); { size_t const initError = ZSTD_initCStream_usingCDict(zc, cdict); if (ZSTD_isError(initError)) goto _output_error; } @@ -470,17 +471,20 @@ static int basicUnitTests(U32 seed, double compressibility, ZSTD_customMem custo cSize = outBuff.pos; ZSTD_freeCDict(cdict); DISPLAYLEVEL(3, "OK (%u bytes : %.2f%%)\n", (U32)cSize, (double)cSize/CNBufferSize*100); + } - { size_t const r = ZSTD_decompress(decodedBuffer, CNBufferSize, compressedBuffer, cSize); - if (!ZSTD_isError(r)) goto _output_error; /* must fail : dictionary not used */ - DISPLAYLEVEL(3, "OK (%s)\n", ZSTD_getErrorName(r)); } + DISPLAYLEVEL(3, "test%3i : decompress without dictionary : ", testNb++); + { size_t const r = ZSTD_decompress(decodedBuffer, CNBufferSize, compressedBuffer, cSize); + if (!ZSTD_isError(r)) goto _output_error; /* must fail : dictionary not used */ + DISPLAYLEVEL(3, "OK (%s)\n", ZSTD_getErrorName(r)); } /* Unknown srcSize */ DISPLAYLEVEL(3, "test%3i : pledgedSrcSize == 0 behaves properly : ", testNb++); { ZSTD_parameters params = ZSTD_getParams(5, 0, 0); params.fParams.contentSizeFlag = 1; - ZSTD_initCStream_advanced(zc, NULL, 0, params, 0); } /* cstream advanced should write the 0 size field */ + ZSTD_initCStream_advanced(zc, NULL, 0, params, 0); + } /* cstream advanced shall write content size = 0 */ inBuff.src = CNBuffer; inBuff.size = 0; inBuff.pos = 0;