]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Temporary Commit to Retain Requested Hash and Chain Logs During Dict Attach
authorW. Felix Handte <w@felixhandte.com>
Mon, 27 Aug 2018 22:09:56 +0000 (15:09 -0700)
committerW. Felix Handte <w@felixhandte.com>
Sat, 29 Sep 2018 00:12:54 +0000 (17:12 -0700)
lib/compress/zstd_compress.c

index e133b37da59df602dd936796436476bc024601fe..4d54772a0d772ac39e36f6e7d1e7b6aea97d34ed 100644 (file)
@@ -1351,11 +1351,21 @@ static size_t ZSTD_resetCCtx_byAttachingCDict(ZSTD_CCtx* cctx,
         /* Copy only compression parameters related to tables. */
         params.cParams = *cdict_cParams;
         params.cParams.windowLog = windowLog;
+        if (params.cParams.strategy <= ZSTD_fast) {
+            DEBUGLOG(4, "Overriding hashLog from %d to %d", params.cParams.hashLog, cctx->requestedParams.cParams.hashLog);
+            DEBUGLOG(4, "Overriding chainLog from %d to %d", params.cParams.chainLog, cctx->requestedParams.cParams.chainLog);
+            if (cctx->requestedParams.cParams.hashLog)
+                params.cParams.hashLog = cctx->requestedParams.cParams.hashLog;
+            if (cctx->requestedParams.cParams.chainLog)
+                params.cParams.chainLog = cctx->requestedParams.cParams.chainLog;
+        }
         ZSTD_resetCCtx_internal(cctx, params, pledgedSrcSize,
                                 ZSTDcrp_continue, zbuff);
         assert(cctx->appliedParams.cParams.strategy == cdict_cParams->strategy);
-        assert(cctx->appliedParams.cParams.hashLog == cdict_cParams->hashLog);
-        assert(cctx->appliedParams.cParams.chainLog == cdict_cParams->chainLog);
+        if (params.cParams.strategy > ZSTD_fast) {
+            assert(cctx->appliedParams.cParams.hashLog == cdict_cParams->hashLog);
+            assert(cctx->appliedParams.cParams.chainLog == cdict_cParams->chainLog);
+        }
     }
 
     {