]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
complementary code comments
authorYann Collet <cyan@fb.com>
Tue, 28 May 2019 21:12:16 +0000 (14:12 -0700)
committerYann Collet <cyan@fb.com>
Tue, 28 May 2019 21:12:16 +0000 (14:12 -0700)
on variables used / impacted during maxDist check

lib/compress/zstd_compress.c
lib/compress/zstd_compress_internal.h
lib/compress/zstd_opt.c

index bd13eebb07f0deadc700f65aeb3985fa752edc8b..0e522a711316934c8c1339867cc3f11eadd32c6f 100644 (file)
@@ -2866,10 +2866,13 @@ static size_t ZSTD_compress_frameChunk (ZSTD_CCtx* cctx,
             ZSTD_reduceIndex(cctx, correction);
             if (ms->nextToUpdate < correction) ms->nextToUpdate = 0;
             else ms->nextToUpdate -= correction;
+            /* invalidate dictionaries on overflow correction */
             ms->loadedDictEnd = 0;
             ms->dictMatchState = NULL;
         }
+
         ZSTD_window_enforceMaxDist(&ms->window, ip + blockSize, maxDist, &ms->loadedDictEnd, &ms->dictMatchState);
+        /* Ensure hash/chain table insertion resumes no sooner than lowlimit */
         if (ms->nextToUpdate < ms->window.lowLimit) ms->nextToUpdate = ms->window.lowLimit;
 
         {   size_t cSize = ZSTD_compressBlock_internal(cctx,
index cbf15136e9b777126f6109e10d1000d7fd204718..bccaacac7a4690631044b5a52ca0f2d91bcdd8ac 100644 (file)
@@ -134,9 +134,9 @@ typedef struct {
 typedef struct ZSTD_matchState_t ZSTD_matchState_t;
 struct ZSTD_matchState_t {
     ZSTD_window_t window;   /* State for window round buffer management */
-    U32 loadedDictEnd;      /* index of end of dictionary, within dictionary's referential. Only used for attached dictionaries. Effectively same value as dictSize, since dictionary indexes start a zero */
+    U32 loadedDictEnd;      /* index of end of dictionary, within context's referential. When dict referential is copied into active context (i.e. not attached), effectively same value as dictSize, since referential starts at zero */
     U32 nextToUpdate;       /* index from which to continue table update */
-    U32 nextToUpdate3;      /* index from which to continue table update */
+    U32 nextToUpdate3;      /* index from which to continue table update of hashTable3 */
     U32 hashLog3;           /* dispatch table : larger == faster, more memory */
     U32* hashTable;
     U32* hashTable3;
index efb69d3267d1aece8b4bfc669417a8bb9b702676..3f2f2b7ba4375822ca86568bc97ce5cc184a00ff 100644 (file)
@@ -862,7 +862,7 @@ ZSTD_compressBlock_opt_generic(ZSTD_matchState_t* ms,
     DEBUGLOG(5, "ZSTD_compressBlock_opt_generic: current=%u, prefix=%u, nextToUpdate=%u",
                 (U32)(ip - base), ms->window.dictLimit, ms->nextToUpdate);
     assert(optLevel <= 2);
-    ms->nextToUpdate3 = ms->nextToUpdate;
+    ms->nextToUpdate3 = ms->nextToUpdate;   /* note : why a separate nextToUpdate3 stored into cctx->ms if it's synchtonized from nextToUpdate anyway ? */
     ZSTD_rescaleFreqs(optStatePtr, (const BYTE*)src, srcSize, optLevel);
     ip += (ip==prefixStart);