]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
fixed wrong assert() condition 750/head
authorYann Collet <cyan@fb.com>
Wed, 5 Jul 2017 02:33:16 +0000 (19:33 -0700)
committerYann Collet <cyan@fb.com>
Wed, 5 Jul 2017 02:33:16 +0000 (19:33 -0700)
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)

lib/compress/zstdmt_compress.c
tests/Makefile

index 9f8d709737c3206e54fe5f938db29afcaf28587d..0cee01eacb86513adf715070bb7d9ee7494ffd19 100644 (file)
@@ -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;
index 9cf578c7eaeb4e435d3a1a8260b63a52c054e144..82f12887bf9b4704d00316c5b39c7b7556ff7f94 100644 (file)
@@ -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)