示例#1
0
        private static void ZSTD_checkDictValidity(ZSTD_window_t *window, void *blockEnd, uint maxDist, uint *loadedDictEndPtr, ZSTD_matchState_t **dictMatchStatePtr)
        {
            assert(loadedDictEndPtr != null);
            assert(dictMatchStatePtr != null);

            {
                uint blockEndIdx   = (uint)((byte *)(blockEnd) - window->@base);
                uint loadedDictEnd = *loadedDictEndPtr;

                assert(blockEndIdx >= loadedDictEnd);
                if (blockEndIdx > loadedDictEnd + maxDist)
                {
                    *loadedDictEndPtr  = 0;
                    *dictMatchStatePtr = null;
                }
                else
                {
                    if (*loadedDictEndPtr != 0)
                    {
                        ;
                    }
                }
            }
        }
示例#2
0
        private static void ZSTD_window_enforceMaxDist(ZSTD_window_t *window, void *blockEnd, uint maxDist, uint *loadedDictEndPtr, ZSTD_matchState_t **dictMatchStatePtr)
        {
            uint blockEndIdx   = (uint)((byte *)(blockEnd) - window->@base);
            uint loadedDictEnd = (loadedDictEndPtr != null) ? *loadedDictEndPtr : 0;

            if (blockEndIdx > maxDist + loadedDictEnd)
            {
                uint newLowLimit = blockEndIdx - maxDist;

                if (window->lowLimit < newLowLimit)
                {
                    window->lowLimit = newLowLimit;
                }

                if (window->dictLimit < window->lowLimit)
                {
                    window->dictLimit = window->lowLimit;
                }

                if (loadedDictEndPtr != null)
                {
                    *loadedDictEndPtr = 0;
                }

                if (dictMatchStatePtr != null)
                {
                    *dictMatchStatePtr = null;
                }
            }
        }