From: senhuang42 Date: Tue, 27 Oct 2020 15:02:58 +0000 (-0400) Subject: Add support for repcodes X-Git-Tag: v1.4.7~30^2~47 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=89f3848310aa11bcd9c01dbe253271c61fa319a5;p=thirdparty%2Fzstd.git Add support for repcodes --- diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index cdfc39c20..cb227bea5 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -4505,7 +4505,11 @@ static size_t ZSTD_copySequencesToSeqStore(ZSTD_CCtx* zc, U32 offCode = inSeqs[idx].offset + ZSTD_REP_MOVE; RETURN_ERROR_IF(matchLength < MINMATCH, corruption_detected, "Matchlength too small!"); DEBUGLOG(7, "Seqstore idx: %zu, seq: (ll: %u, ml: %u, of: %u)", idx, litLength, matchLength, offCode); - ZSTD_storeSeq(&zc->seqStore, litLength, ip, iend, offCode, matchLength - MINMATCH); + if (inSeqs[idx].rep) { + ZSTD_storeSeq(&zc->seqStore, litLength, ip, iend, inSeqs[idx].rep - 1, matchLength - MINMATCH); + } else { + ZSTD_storeSeq(&zc->seqStore, litLength, ip, iend, offCode, matchLength - MINMATCH); + } ip += matchLength + litLength; } diff --git a/lib/compress/zstd_compress_internal.h b/lib/compress/zstd_compress_internal.h index 3ff318d53..6b6d101f8 100644 --- a/lib/compress/zstd_compress_internal.h +++ b/lib/compress/zstd_compress_internal.h @@ -497,6 +497,9 @@ static void ZSTD_safecopyLiterals(BYTE* op, BYTE const* ip, BYTE const* const ie HINT_INLINE UNUSED_ATTR void ZSTD_storeSeq(seqStore_t* seqStorePtr, size_t litLength, const BYTE* literals, const BYTE* litLimit, U32 offCode, size_t mlBase) { + if (offCode <= 3) { + printf("of: %u ml: %u ll: %u\n", offCode, mlBase, litLength); + } BYTE const* const litLimit_w = litLimit - WILDCOPY_OVERLENGTH; BYTE const* const litEnd = literals + litLength; #if defined(DEBUGLEVEL) && (DEBUGLEVEL >= 6)