]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Output regular uncompressed block when compressSequences fails
authorBimba Shrestha <bimbashrestha@fb.com>
Mon, 18 Nov 2019 16:43:14 +0000 (08:43 -0800)
committerBimba Shrestha <bimbashrestha@fb.com>
Mon, 18 Nov 2019 16:43:14 +0000 (08:43 -0800)
lib/compress/zstd_compress.c

index 0639d3272400a3403a21399c5172b968caedef81..a883d21c18a6eed4d29a61d7d00b248061f41b5d 100644 (file)
@@ -2496,7 +2496,13 @@ static size_t ZSTD_compressBlock_targetCBlockSize(ZSTD_CCtx* zc,
                     srcSize,
                     zc->entropyWorkspace, HUF_WORKSPACE_SIZE /* statically allocated in resetCCtx */,
                     zc->bmi2);
-            if (!ZSTD_isError(cSize) && cSize != 0) {
+
+            if (cSize == 0) {
+                /* If compressSequences didn't work, we just output a regular
+                 * uncompressed block */
+                cSize = ZSTD_noCompressBlock(dst, dstCapacity, src, srcSize, lastBlock);
+                FORWARD_IF_ERROR(cSize);
+            } else {
                 U32 const cBlockHeader24 = lastBlock + (((U32)bt_compressed)<<1) + (U32)(cSize << 3);
                 MEM_writeLE24(ostart, cBlockHeader24);
                 cSize += ZSTD_blockHeaderSize;