diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index c19b243c9..98890c4d0 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -4694,6 +4694,16 @@ static size_t ZSTD_compressSequences_internal(void* dst, size_t dstCapacity, BYTE* op = (BYTE*)dst; DEBUGLOG(4, "ZSTD_compressSequences_internal srcSize: %zu, inSeqsSize: %zu", srcSize, inSeqsSize); + /* Special case: empty frame */ + if (remaining == 0) { + U32 const cBlockHeader24 = 1 /* last block */ + (((U32)bt_raw)<<1); + RETURN_ERROR_IF(dstCapacity<4, dstSize_tooSmall, "No room for empty frame block header"); + MEM_writeLE32(op, cBlockHeader24); + op += ZSTD_blockHeaderSize; + dstCapacity -= ZSTD_blockHeaderSize; + cSize += ZSTD_blockHeaderSize; + } + while (remaining) { U32 cBlockSize; int additionalByteAdjustment;