]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Require LDM matches to be strictly greater in length 2341/head
authorsenhuang42 <senhuang96@fb.com>
Thu, 8 Oct 2020 03:44:36 +0000 (23:44 -0400)
committersenhuang42 <senhuang96@fb.com>
Fri, 9 Oct 2020 16:56:18 +0000 (12:56 -0400)
lib/compress/zstd_opt.c

index 8ba7aba3846e861265cfa23932dca1cf7aa527b6..e55c459debd15e34d76b1b3985742cdffbc51091 100644 (file)
@@ -867,20 +867,9 @@ static void ZSTD_optLdm_maybeAddMatch(ZSTD_match_t* matches, U32* nbMatches,
         return;
     }
 
-    DEBUGLOG(6, "ZSTD_optLdm_maybeAddMatch(): Adding ldm candidate match (offCode: %u matchLength %u) at block position=%u",
-             candidateOffCode, candidateMatchLength, currPosInBlock);
-    if (*nbMatches == 0) {
-        matches[*nbMatches].len = candidateMatchLength;
-        matches[*nbMatches].off = candidateOffCode;
-        (*nbMatches)++;
-    } else if ((candidateMatchLength >= matches[*nbMatches-1].len) && *nbMatches < ZSTD_OPT_NUM) {
-        if (candidateMatchLength == matches[*nbMatches-1].len) {
-            /* No need to insert match with same matchLength. At most, replace offCode if it is smaller. */
-            if (candidateOffCode < matches[*nbMatches-1].off) {
-                matches[*nbMatches-1].off = candidateOffCode;
-            }
-            return;
-        }
+    if (*nbMatches == 0 || ((candidateMatchLength > matches[*nbMatches-1].len) && *nbMatches < ZSTD_OPT_NUM)) {
+        DEBUGLOG(6, "ZSTD_optLdm_maybeAddMatch(): Adding ldm candidate match (offCode: %u matchLength %u) at block position=%u",
+                 candidateOffCode, candidateMatchLength, currPosInBlock);
         matches[*nbMatches].len = candidateMatchLength;
         matches[*nbMatches].off = candidateOffCode;
         (*nbMatches)++;