From ea85dc7af6f97cbfc7fd1e6ff1515660e58501a3 Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Tue, 22 Oct 2024 15:25:45 -0700 Subject: [PATCH] conservatively estimate over-splitting in presence of incompressible loss ensure data can never be expanded by more than 3 bytes per full block. --- lib/compress/zstd_compress.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index edb71ae50..85966d888 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -4587,6 +4587,7 @@ static size_t ZSTD_compress_frameChunk(ZSTD_CCtx* cctx, } /* if (ZSTD_useTargetCBlockSize(&cctx->appliedParams))*/ if (cSize < blockSize) savings += (blockSize - cSize); + else if (savings) savings--; ip += blockSize; assert(remaining >= blockSize); remaining -= blockSize;