From 0451accab1363778cd1a2fa10660cafdf5143a20 Mon Sep 17 00:00:00 2001 From: Bimba Shrestha Date: Thu, 21 Nov 2019 13:06:26 -0800 Subject: [PATCH] Checking noCompressBlock explicitly for rep code confirmation --- lib/compress/zstd_compress.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index 064a38ff..f8c64994 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -2470,8 +2470,10 @@ static size_t ZSTD_compressBlock_targetCBlockSize(ZSTD_CCtx* zc, * encode using ZSTD_noCompressSuperBlock writing sub blocks * in uncompressed mode. */ + int usingNoCompressSuperBlock = 0; if (cSize == 0) { cSize = ZSTD_noCompressSuperBlock(dst, dstCapacity, src, srcSize, zc->appliedParams.targetCBlockSize, lastBlock); + usingNoCompressSuperBlock = 1; /* In compression, there is an assumption that a compressed block is always * within the size of ZSTD_compressBound(). However, SuperBlock compression * can exceed the limit due to overhead of headers from SubBlocks. @@ -2511,7 +2513,7 @@ static size_t ZSTD_compressBlock_targetCBlockSize(ZSTD_CCtx* zc, } } - if (!ZSTD_isError(cSize) && cSize != 0) { + if (!ZSTD_isError(cSize) && !usingNoCompressSuperBlock) { /* confirm repcodes and entropy tables when emitting a compressed block */ ZSTD_compressedBlockState_t* const tmp = zc->blockState.prevCBlock; zc->blockState.prevCBlock = zc->blockState.nextCBlock;