fix(compress): reuse block-header serializer for sequence APIs

The public sequence compression paths still built compressed block headers
locally in C, leaving two byte-formatting implementations after the frame-chunk
path was migrated. Route both compressed-block branches through the existing
Rust serializer while retaining their C-side sequence, entropy, and capacity
logic.

Test Plan:
- `make -B -C lib -j2 lib` -- passed
- `make -B -C tests -j2 fuzzer` -- passed
- `tests/fuzzer -s4560 -t47 -i48 -v` -- passed
- `git diff --cached --check` -- passed
This commit is contained in:
2026-07-18 10:03:32 +02:00
parent c9490ffbcd
commit ac7683de9f
+2 -6
View File
@@ -5274,15 +5274,13 @@ ZSTD_compressSequences_internal(ZSTD_CCtx* cctx,
FORWARD_IF_ERROR(cBlockSize, "ZSTD_rleCompressBlock failed");
DEBUGLOG(5, "Writing out RLE block, size: %zu", cBlockSize);
} else {
U32 cBlockHeader;
/* Error checking and repcodes update */
ZSTD_blockState_confirmRepcodesAndEntropyTables(&cctx->blockState);
if (cctx->blockState.prevCBlock->entropy.fse.offcode_repeatMode == FSE_repeat_valid)
cctx->blockState.prevCBlock->entropy.fse.offcode_repeatMode = FSE_repeat_check;
/* Write block header into beginning of block*/
cBlockHeader = lastBlock + (((U32)bt_compressed)<<1) + (U32)(compressedSeqsSize << 3);
MEM_writeLE24(op, cBlockHeader);
ZSTD_rust_writeBlockHeader(op, compressedSeqsSize, blockSize, lastBlock);
cBlockSize = ZSTD_blockHeaderSize + compressedSeqsSize;
DEBUGLOG(5, "Writing out compressed block, size: %zu", cBlockSize);
}
@@ -5528,7 +5526,6 @@ ZSTD_compressSequencesAndLiterals_internal(ZSTD_CCtx* cctx,
*/
RETURN_ERROR(cannotProduce_uncompressedBlock, "ZSTD_compressSequencesAndLiterals cannot generate an uncompressed block");
} else {
U32 cBlockHeader;
assert(compressedSeqsSize > 1); /* no RLE */
/* Error checking and repcodes update */
ZSTD_blockState_confirmRepcodesAndEntropyTables(&cctx->blockState);
@@ -5536,8 +5533,7 @@ ZSTD_compressSequencesAndLiterals_internal(ZSTD_CCtx* cctx,
cctx->blockState.prevCBlock->entropy.fse.offcode_repeatMode = FSE_repeat_check;
/* Write block header into beginning of block*/
cBlockHeader = lastBlock + (((U32)bt_compressed)<<1) + (U32)(compressedSeqsSize << 3);
MEM_writeLE24(op, cBlockHeader);
ZSTD_rust_writeBlockHeader(op, compressedSeqsSize, block.blockSize, lastBlock);
cBlockSize = ZSTD_blockHeaderSize + compressedSeqsSize;
DEBUGLOG(5, "Writing out compressed block, size: %zu", cBlockSize);
}