From: senhuang42 Date: Mon, 16 Nov 2020 23:05:35 +0000 (-0500) Subject: Fix assert edge case, improve documentation in zstd.h X-Git-Tag: v1.4.7~30^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8f3136a9c77f4f333c6e9e55886f737c25df902a;p=thirdparty%2Fzstd.git Fix assert edge case, improve documentation in zstd.h --- diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index e6257ba6f..069835b23 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -4691,7 +4691,8 @@ static size_t ZSTD_copySequencesToSeqStore(seqStore_t* seqStore, ZSTD_sequencePo ZSTD_storeSeq(seqStore, litLength, ip, iend, offCode, matchLength - MINMATCH); ip += matchLength + litLength; } - assert(endPosInSequence <= inSeqs[idx].litLength + inSeqs[idx].matchLength); + DEBUGLOG(5, "Ending seq: idx: %zu (of: %u ml: %u ll: %u)", idx, inSeqs[idx].offset, inSeqs[idx].matchLength, inSeqs[idx].litLength); + assert(idx == inSeqsSize || endPosInSequence <= inSeqs[idx].litLength + inSeqs[idx].matchLength); seqPos->idx = idx; seqPos->posInSequence = endPosInSequence; ZSTD_memcpy(cctx->blockState.nextCBlock->rep, updatedRepcodes.rep, sizeof(repcodes_t)); diff --git a/lib/zstd.h b/lib/zstd.h index a0aa6d3ac..05aebc439 100644 --- a/lib/zstd.h +++ b/lib/zstd.h @@ -1340,13 +1340,15 @@ ZSTDLIB_API size_t ZSTD_mergeBlockDelimiters(ZSTD_Sequence* sequences, size_t se * Compress sequences given by inSeqs, generated from source buffer 'src', using a cctx. * The entire source is compressed into a single frame. * - * If invoked with ZSTD_sf_noBlockDelimiters, the array of ZSTD_Sequence is expected to contain + * If ZSTD_c_blockDelimiters == ZSTD_sf_noBlockDelimiters, the array of ZSTD_Sequence is expected to contain * no block delimiters (defined in ZSTD_Sequence). Block boundaries are roughly determined based on * the block size derived from the cctx, and sequences may be split. * - * If invoked with ZSTD_sf_explicitBlockDelimiters, the array of ZSTD_Sequence is expected to contain + * If STD_c_blockDelimiters == ZSTD_sf_explicitBlockDelimiters, the array of ZSTD_Sequence is expected to contain * block delimiters. * + * Repcodes are, as of now, always re-calculated. + * * @return : final compressed size. */ ZSTDLIB_API size_t ZSTD_compressSequences(ZSTD_CCtx* const cctx, void* dst, size_t dstSize,