Fix calculation for promoting literal+match seqs

This commit is contained in:
Emmanuel Marty 2019-11-19 19:48:39 +01:00 committed by GitHub
parent b1738b4003
commit 8e4e7c06c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -505,12 +505,13 @@ static int lzsa_optimize_command_count_v2(lzsa_compressor *pCompressor, const un
if (pMatch->length == 0 &&
(i + 1) < (nEndOffset - LAST_LITERALS) &&
pBestMatch[i + 1].length >= MIN_MATCH_SIZE_V2 &&
pBestMatch[i + 1].length < MAX_VARLEN &&
pBestMatch[i + 1].offset &&
i >= pBestMatch[i + 1].offset &&
(i + pBestMatch[i + 1].length + 1) <= (nEndOffset - LAST_LITERALS) &&
!memcmp(pInWindow + i - (pBestMatch[i + 1].offset), pInWindow + i, pBestMatch[i + 1].length + 1)) {
int nCurLenSize = lzsa_get_match_varlen_size_v2(pBestMatch[i + 1].length);
int nReducedLenSize = lzsa_get_match_varlen_size_v2(pBestMatch[i + 1].length + 1);
int nCurLenSize = lzsa_get_match_varlen_size_v2(pBestMatch[i + 1].length - MIN_MATCH_SIZE_V2);
int nReducedLenSize = lzsa_get_match_varlen_size_v2(pBestMatch[i + 1].length + 1 - MIN_MATCH_SIZE_V2);
if ((nReducedLenSize - nCurLenSize) <= 8) {
/* Merge */