From: Yann Collet Date: Wed, 5 Jul 2017 02:33:16 +0000 (-0700) Subject: fixed wrong assert() condition X-Git-Tag: v1.3.0^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F750%2Fhead;p=thirdparty%2Fzstd.git fixed wrong assert() condition A single job created by ZSTDMT_compress() can be < 256KB if data to compress is < 256 KB (in which case it is delegated to single thread mode) --- diff --git a/lib/compress/zstdmt_compress.c b/lib/compress/zstdmt_compress.c index 9f8d70973..0cee01eac 100644 --- a/lib/compress/zstdmt_compress.c +++ b/lib/compress/zstdmt_compress.c @@ -475,13 +475,12 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx, size_t frameStartPos = 0, dstBufferPos = 0; DEBUGLOG(4, "nbChunks : %2u (chunkSize : %u bytes) ", nbChunks, (U32)avgChunkSize); - assert(avgChunkSize >= 256 KB); /* required for ZSTD_compressBound(A) + ZSTD_compressBound(B) <= ZSTD_compressBound(A+B) */ - if (nbChunks==1) { /* fallback to single-thread mode */ ZSTD_CCtx* const cctx = mtctx->cctxPool->cctx[0]; if (cdict) return ZSTD_compress_usingCDict_advanced(cctx, dst, dstCapacity, src, srcSize, cdict, params.fParams); return ZSTD_compress_advanced(cctx, dst, dstCapacity, src, srcSize, NULL, 0, params); } + assert(avgChunkSize >= 256 KB); /* condition for ZSTD_compressBound(A) + ZSTD_compressBound(B) <= ZSTD_compressBound(A+B), which is useful to avoid allocating extra buffers */ if (nbChunks > mtctx->jobIDMask+1) { /* enlarge job table */ U32 nbJobs = nbChunks; diff --git a/tests/Makefile b/tests/Makefile index 9cf578c7e..82f12887b 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -96,6 +96,7 @@ gzstd: fullbench32: CPPFLAGS += -m32 fullbench fullbench32 : CPPFLAGS += $(MULTITHREAD_CPP) fullbench fullbench32 : LDFLAGS += $(MULTITHREAD_LD) +fullbench fullbench32 : DEBUGFLAGS = # turn off assert() for speed measurements fullbench fullbench32 : $(ZSTD_FILES) $(PRGDIR)/datagen.c fullbench.c $(CC) $(FLAGS) $^ -o $@$(EXT)