Allow Different Dict Attachment Cut-Offs for Different Strategies
diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c
index 46a3fe5..68beea0 100644
--- a/lib/compress/zstd_compress.c
+++ b/lib/compress/zstd_compress.c
@@ -1207,7 +1207,18 @@
/* We have a choice between copying the dictionary context into the working
* context, or referencing the dictionary context from the working context
* in-place. We decide here which strategy to use. */
- const int attachDict = ( pledgedSrcSize <= 8 KB
+ const U64 attachDictSizeCutoffs[(unsigned)ZSTD_btultra+1] = {
+ 8 KB, /* unused */
+ 8 KB, /* ZSTD_fast */
+ 16 KB, /* ZSTD_dfast */
+ 16 KB, /* ZSTD_greedy */
+ 16 KB, /* ZSTD_lazy */
+ 16 KB, /* ZSTD_lazy2 */
+ 16 KB, /* ZSTD_btlazy2 */
+ 16 KB, /* ZSTD_btopt */
+ 16 KB /* ZSTD_btultra */
+ };
+ const int attachDict = ( pledgedSrcSize <= attachDictSizeCutoffs[cdict->cParams.strategy]
|| pledgedSrcSize == ZSTD_CONTENTSIZE_UNKNOWN )
&& !params.forceWindow /* dictMatchState isn't correctly
* handled in _enforceMaxDist */