]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
improved ZSTD_compressBlock_opt_extDict_generic
authorPrzemyslaw Skibinski <inikep@gmail.com>
Tue, 24 Jan 2017 12:18:50 +0000 (13:18 +0100)
committerPrzemyslaw Skibinski <inikep@gmail.com>
Tue, 24 Jan 2017 12:18:50 +0000 (13:18 +0100)
lib/compress/zstd_opt.h
zlibWrapper/.gitignore

index f071c4f3020cecbd329f66b47ff7cc3a1d614d07..3bbf2eb7d0bab1437513b02de06926205346ea0d 100644 (file)
@@ -825,7 +825,7 @@ void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
 
             match_num = ZSTD_BtGetAllMatches_selectMLS_extDict(ctx, inr, iend, maxSearches, mls, matches, minMatch);
 
-            if (match_num > 0 && matches[match_num-1].len > sufficient_len) {
+            if (match_num > 0 && (matches[match_num-1].len > sufficient_len || cur + matches[match_num-1].len >= ZSTD_OPT_NUM)) {
                 best_mlen = matches[match_num-1].len;
                 best_off = matches[match_num-1].off;
                 last_pos = cur + 1;
@@ -835,7 +835,7 @@ void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
             /* set prices using matches at position = cur */
             for (u = 0; u < match_num; u++) {
                 mlen = (u>0) ? matches[u-1].len+1 : best_mlen;
-                best_mlen = (cur + matches[u].len < ZSTD_OPT_NUM) ? matches[u].len : ZSTD_OPT_NUM - cur;
+                best_mlen = matches[u].len;
 
                 while (mlen <= best_mlen) {
                     if (opt[cur].mlen == 1) {
index 23d2f3a66ba4fa87e89cb40670181b7a7ae30bd7..6167ca4dac8808a76b31a95f6d248f090015a9eb 100644 (file)
@@ -22,4 +22,4 @@ zwrapbench
 *.txt
 
 # Directories
-minizip/
\ No newline at end of file
+minizip/