extzstd 0.0.3.CONCEPT-x86-mingw32 → 0.1-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/HISTORY.ja +5 -0
 - data/LICENSE +6 -6
 - data/README.md +35 -22
 - data/contrib/zstd/LICENSE +13 -9
 - data/contrib/zstd/README.md +37 -44
 - data/contrib/zstd/common/entropy_common.c +33 -39
 - data/contrib/zstd/common/error_private.c +43 -0
 - data/contrib/zstd/common/error_private.h +11 -60
 - data/contrib/zstd/common/fse.h +11 -5
 - data/contrib/zstd/common/fse_decompress.c +14 -16
 - data/contrib/zstd/common/huf.h +1 -1
 - data/contrib/zstd/common/mem.h +36 -43
 - data/contrib/zstd/common/xxhash.c +31 -18
 - data/contrib/zstd/common/xxhash.h +71 -35
 - data/contrib/zstd/common/zbuff.h +29 -35
 - data/contrib/zstd/common/zstd_common.c +24 -32
 - data/contrib/zstd/common/zstd_errors.h +60 -0
 - data/contrib/zstd/common/zstd_internal.h +109 -80
 - data/contrib/zstd/compress/fse_compress.c +9 -6
 - data/contrib/zstd/compress/huf_compress.c +30 -74
 - data/contrib/zstd/compress/zbuff_compress.c +43 -51
 - data/contrib/zstd/compress/zstd_compress.c +953 -763
 - data/contrib/zstd/compress/zstd_opt.h +115 -261
 - data/contrib/zstd/decompress/huf_decompress.c +29 -40
 - data/contrib/zstd/decompress/zbuff_decompress.c +36 -78
 - data/contrib/zstd/decompress/zstd_decompress.c +976 -496
 - data/contrib/zstd/dictBuilder/divsufsort.h +5 -5
 - data/contrib/zstd/dictBuilder/zdict.c +194 -229
 - data/contrib/zstd/dictBuilder/zdict.h +66 -68
 - data/contrib/zstd/legacy/zstd_legacy.h +168 -49
 - data/contrib/zstd/legacy/zstd_v01.c +95 -178
 - data/contrib/zstd/legacy/zstd_v01.h +12 -32
 - data/contrib/zstd/legacy/zstd_v02.c +48 -274
 - data/contrib/zstd/legacy/zstd_v02.h +12 -32
 - data/contrib/zstd/legacy/zstd_v03.c +48 -274
 - data/contrib/zstd/legacy/zstd_v03.h +12 -32
 - data/contrib/zstd/legacy/zstd_v04.c +63 -320
 - data/contrib/zstd/legacy/zstd_v04.h +13 -33
 - data/contrib/zstd/legacy/zstd_v05.c +80 -345
 - data/contrib/zstd/legacy/zstd_v05.h +9 -31
 - data/contrib/zstd/legacy/zstd_v06.c +48 -458
 - data/contrib/zstd/legacy/zstd_v06.h +41 -67
 - data/contrib/zstd/legacy/zstd_v07.c +4544 -0
 - data/contrib/zstd/legacy/zstd_v07.h +173 -0
 - data/contrib/zstd/zstd.h +640 -0
 - data/ext/extconf.rb +7 -3
 - data/ext/extzstd.c +263 -106
 - data/ext/extzstd.h +8 -6
 - data/ext/extzstd_nogvls.h +0 -117
 - data/ext/extzstd_stream.c +347 -0
 - data/ext/zstd_common.c +8 -0
 - data/ext/zstd_compress.c +6 -0
 - data/ext/zstd_decompress.c +5 -0
 - data/ext/zstd_dictbuilder.c +5 -0
 - data/ext/zstd_legacy_v07.c +1 -0
 - data/gemstub.rb +18 -16
 - data/lib/2.1/extzstd.so +0 -0
 - data/lib/2.2/extzstd.so +0 -0
 - data/lib/2.3/extzstd.so +0 -0
 - data/lib/extzstd/version.rb +1 -1
 - data/lib/extzstd.rb +77 -43
 - data/test/test_basic.rb +11 -6
 - metadata +23 -11
 - data/contrib/zstd/common/error_public.h +0 -77
 - data/contrib/zstd/common/zstd.h +0 -475
 - data/ext/extzstd_buffered.c +0 -265
 - data/ext/zstd_amalgam.c +0 -18
 - data/lib/2.0/extzstd.so +0 -0
 
| 
         @@ -1,43 +1,19 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
               met:
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                   * Redistributions of source code must retain the above copyright
         
     | 
| 
       13 
     | 
    
         
            -
               notice, this list of conditions and the following disclaimer.
         
     | 
| 
       14 
     | 
    
         
            -
                   * Redistributions in binary form must reproduce the above
         
     | 
| 
       15 
     | 
    
         
            -
               copyright notice, this list of conditions and the following disclaimer
         
     | 
| 
       16 
     | 
    
         
            -
               in the documentation and/or other materials provided with the
         
     | 
| 
       17 
     | 
    
         
            -
               distribution.
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
               THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
         
     | 
| 
       20 
     | 
    
         
            -
               "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
         
     | 
| 
       21 
     | 
    
         
            -
               LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
         
     | 
| 
       22 
     | 
    
         
            -
               A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
         
     | 
| 
       23 
     | 
    
         
            -
               OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
         
     | 
| 
       24 
     | 
    
         
            -
               SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
         
     | 
| 
       25 
     | 
    
         
            -
               LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
         
     | 
| 
       26 
     | 
    
         
            -
               DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
         
     | 
| 
       27 
     | 
    
         
            -
               THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
         
     | 
| 
       28 
     | 
    
         
            -
               (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
         
     | 
| 
       29 
     | 
    
         
            -
               OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
               You can contact the author at :
         
     | 
| 
       32 
     | 
    
         
            -
               - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
         
     | 
| 
       33 
     | 
    
         
            -
               - Public forum : https://groups.google.com/forum/#!forum/lz4c
         
     | 
| 
       34 
     | 
    
         
            -
            ****************************************************************** */
         
     | 
| 
      
 1 
     | 
    
         
            +
            /**
         
     | 
| 
      
 2 
     | 
    
         
            +
             * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
         
     | 
| 
      
 3 
     | 
    
         
            +
             * All rights reserved.
         
     | 
| 
      
 4 
     | 
    
         
            +
             *
         
     | 
| 
      
 5 
     | 
    
         
            +
             * This source code is licensed under the BSD-style license found in the
         
     | 
| 
      
 6 
     | 
    
         
            +
             * LICENSE file in the root directory of this source tree. An additional grant
         
     | 
| 
      
 7 
     | 
    
         
            +
             * of patent rights can be found in the PATENTS file in the same directory.
         
     | 
| 
      
 8 
     | 
    
         
            +
             */
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
       35 
10 
     | 
    
         | 
| 
       36 
11 
     | 
    
         
             
            /******************************************
         
     | 
| 
       37 
12 
     | 
    
         
             
            *  Includes
         
     | 
| 
       38 
13 
     | 
    
         
             
            ******************************************/
         
     | 
| 
       39 
14 
     | 
    
         
             
            #include <stddef.h>    /* size_t, ptrdiff_t */
         
     | 
| 
       40 
15 
     | 
    
         
             
            #include "zstd_v01.h"
         
     | 
| 
      
 16 
     | 
    
         
            +
            #include "error_private.h"
         
     | 
| 
       41 
17 
     | 
    
         | 
| 
       42 
18 
     | 
    
         | 
| 
       43 
19 
     | 
    
         
             
            /******************************************
         
     | 
| 
         @@ -164,11 +140,15 @@ typedef struct 
     | 
|
| 
       164 
140 
     | 
    
         
             
            #  pragma warning(disable : 4214)        /* disable: C4214: non-int bitfields */
         
     | 
| 
       165 
141 
     | 
    
         
             
            #else
         
     | 
| 
       166 
142 
     | 
    
         
             
            #  define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
         
     | 
| 
       167 
     | 
    
         
            -
            #   
     | 
| 
       168 
     | 
    
         
            -
            #     
     | 
| 
      
 143 
     | 
    
         
            +
            #  if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L   /* C99 */
         
     | 
| 
      
 144 
     | 
    
         
            +
            #    ifdef __GNUC__
         
     | 
| 
      
 145 
     | 
    
         
            +
            #      define FORCE_INLINE static inline __attribute__((always_inline))
         
     | 
| 
      
 146 
     | 
    
         
            +
            #    else
         
     | 
| 
      
 147 
     | 
    
         
            +
            #      define FORCE_INLINE static inline
         
     | 
| 
      
 148 
     | 
    
         
            +
            #    endif
         
     | 
| 
       169 
149 
     | 
    
         
             
            #  else
         
     | 
| 
       170 
     | 
    
         
            -
            #    define FORCE_INLINE static 
     | 
| 
       171 
     | 
    
         
            -
            #  endif
         
     | 
| 
      
 150 
     | 
    
         
            +
            #    define FORCE_INLINE static
         
     | 
| 
      
 151 
     | 
    
         
            +
            #  endif /* __STDC_VERSION__ */
         
     | 
| 
       172 
152 
     | 
    
         
             
            #endif
         
     | 
| 
       173 
153 
     | 
    
         | 
| 
       174 
154 
     | 
    
         | 
| 
         @@ -225,7 +205,7 @@ typedef   signed long long  S64; 
     | 
|
| 
       225 
205 
     | 
    
         
             
            #ifndef FSE_FORCE_MEMORY_ACCESS   /* can be defined externally, on command line for example */
         
     | 
| 
       226 
206 
     | 
    
         
             
            #  if defined(__GNUC__) && ( defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) )
         
     | 
| 
       227 
207 
     | 
    
         
             
            #    define FSE_FORCE_MEMORY_ACCESS 2
         
     | 
| 
       228 
     | 
    
         
            -
            #  elif defined(__INTEL_COMPILER) || \
         
     | 
| 
      
 208 
     | 
    
         
            +
            #  elif (defined(__INTEL_COMPILER) && !defined(WIN32)) || \
         
     | 
| 
       229 
209 
     | 
    
         
             
              (defined(__GNUC__) && ( defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) ))
         
     | 
| 
       230 
210 
     | 
    
         
             
            #    define FSE_FORCE_MEMORY_ACCESS 1
         
     | 
| 
       231 
211 
     | 
    
         
             
            #  endif
         
     | 
| 
         @@ -978,13 +958,16 @@ static size_t HUF_readDTable (U16* DTable, const void* src, size_t srcSize) 
     | 
|
| 
       978 
958 
     | 
    
         
             
                U32 weightTotal;
         
     | 
| 
       979 
959 
     | 
    
         
             
                U32 maxBits;
         
     | 
| 
       980 
960 
     | 
    
         
             
                const BYTE* ip = (const BYTE*) src;
         
     | 
| 
       981 
     | 
    
         
            -
                size_t iSize 
     | 
| 
      
 961 
     | 
    
         
            +
                size_t iSize;
         
     | 
| 
       982 
962 
     | 
    
         
             
                size_t oSize;
         
     | 
| 
       983 
963 
     | 
    
         
             
                U32 n;
         
     | 
| 
       984 
964 
     | 
    
         
             
                U32 nextRankStart;
         
     | 
| 
       985 
965 
     | 
    
         
             
                void* ptr = DTable+1;
         
     | 
| 
       986 
966 
     | 
    
         
             
                HUF_DElt* const dt = (HUF_DElt*)ptr;
         
     | 
| 
       987 
967 
     | 
    
         | 
| 
      
 968 
     | 
    
         
            +
                if (!srcSize) return (size_t)-FSE_ERROR_srcSize_wrong;
         
     | 
| 
      
 969 
     | 
    
         
            +
                iSize = ip[0];
         
     | 
| 
      
 970 
     | 
    
         
            +
             
     | 
| 
       988 
971 
     | 
    
         
             
                FSE_STATIC_ASSERT(sizeof(HUF_DElt) == sizeof(U16));   /* if compilation fails here, assertion is false */
         
     | 
| 
       989 
972 
     | 
    
         
             
                //memset(huffWeight, 0, sizeof(huffWeight));   /* should not be necessary, but some analyzer complain ... */
         
     | 
| 
       990 
973 
     | 
    
         
             
                if (iSize >= 128)  /* special header */
         
     | 
| 
         @@ -1025,6 +1008,7 @@ static size_t HUF_readDTable (U16* DTable, const void* src, size_t srcSize) 
     | 
|
| 
       1025 
1008 
     | 
    
         
             
                    rankVal[huffWeight[n]]++;
         
     | 
| 
       1026 
1009 
     | 
    
         
             
                    weightTotal += (1 << huffWeight[n]) >> 1;
         
     | 
| 
       1027 
1010 
     | 
    
         
             
                }
         
     | 
| 
      
 1011 
     | 
    
         
            +
                if (weightTotal == 0) return (size_t)-FSE_ERROR_corruptionDetected;
         
     | 
| 
       1028 
1012 
     | 
    
         | 
| 
       1029 
1013 
     | 
    
         
             
                /* get last non-null symbol weight (implied, total must be 2^n) */
         
     | 
| 
       1030 
1014 
     | 
    
         
             
                maxBits = FSE_highbit32(weightTotal) + 1;
         
     | 
| 
         @@ -1196,57 +1180,6 @@ static size_t HUF_decompress (void* dst, size_t maxDstSize, const void* cSrc, si 
     | 
|
| 
       1196 
1180 
     | 
    
         | 
| 
       1197 
1181 
     | 
    
         
             
            #endif   /* FSE_COMMONDEFS_ONLY */
         
     | 
| 
       1198 
1182 
     | 
    
         | 
| 
       1199 
     | 
    
         
            -
            /*
         
     | 
| 
       1200 
     | 
    
         
            -
                zstd - standard compression library
         
     | 
| 
       1201 
     | 
    
         
            -
                Header File for static linking only
         
     | 
| 
       1202 
     | 
    
         
            -
                Copyright (C) 2014-2015, Yann Collet.
         
     | 
| 
       1203 
     | 
    
         
            -
             
     | 
| 
       1204 
     | 
    
         
            -
                BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
         
     | 
| 
       1205 
     | 
    
         
            -
             
     | 
| 
       1206 
     | 
    
         
            -
                Redistribution and use in source and binary forms, with or without
         
     | 
| 
       1207 
     | 
    
         
            -
                modification, are permitted provided that the following conditions are
         
     | 
| 
       1208 
     | 
    
         
            -
                met:
         
     | 
| 
       1209 
     | 
    
         
            -
                * Redistributions of source code must retain the above copyright
         
     | 
| 
       1210 
     | 
    
         
            -
                notice, this list of conditions and the following disclaimer.
         
     | 
| 
       1211 
     | 
    
         
            -
                * Redistributions in binary form must reproduce the above
         
     | 
| 
       1212 
     | 
    
         
            -
                copyright notice, this list of conditions and the following disclaimer
         
     | 
| 
       1213 
     | 
    
         
            -
                in the documentation and/or other materials provided with the
         
     | 
| 
       1214 
     | 
    
         
            -
                distribution.
         
     | 
| 
       1215 
     | 
    
         
            -
                THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
         
     | 
| 
       1216 
     | 
    
         
            -
                "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
         
     | 
| 
       1217 
     | 
    
         
            -
                LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
         
     | 
| 
       1218 
     | 
    
         
            -
                A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
         
     | 
| 
       1219 
     | 
    
         
            -
                OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
         
     | 
| 
       1220 
     | 
    
         
            -
                SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
         
     | 
| 
       1221 
     | 
    
         
            -
                LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
         
     | 
| 
       1222 
     | 
    
         
            -
                DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
         
     | 
| 
       1223 
     | 
    
         
            -
                THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
         
     | 
| 
       1224 
     | 
    
         
            -
                (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
         
     | 
| 
       1225 
     | 
    
         
            -
                OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         
     | 
| 
       1226 
     | 
    
         
            -
             
     | 
| 
       1227 
     | 
    
         
            -
                You can contact the author at :
         
     | 
| 
       1228 
     | 
    
         
            -
                - zstd source repository : https://github.com/Cyan4973/zstd
         
     | 
| 
       1229 
     | 
    
         
            -
                - ztsd public forum : https://groups.google.com/forum/#!forum/lz4c
         
     | 
| 
       1230 
     | 
    
         
            -
            */
         
     | 
| 
       1231 
     | 
    
         
            -
             
     | 
| 
       1232 
     | 
    
         
            -
            /* The objects defined into this file should be considered experimental.
         
     | 
| 
       1233 
     | 
    
         
            -
             * They are not labelled stable, as their prototype may change in the future.
         
     | 
| 
       1234 
     | 
    
         
            -
             * You can use them for tests, provide feedback, or if you can endure risk of future changes.
         
     | 
| 
       1235 
     | 
    
         
            -
             */
         
     | 
| 
       1236 
     | 
    
         
            -
             
     | 
| 
       1237 
     | 
    
         
            -
            /**************************************
         
     | 
| 
       1238 
     | 
    
         
            -
            *  Error management
         
     | 
| 
       1239 
     | 
    
         
            -
            **************************************/
         
     | 
| 
       1240 
     | 
    
         
            -
            #define ZSTD_LIST_ERRORS(ITEM) \
         
     | 
| 
       1241 
     | 
    
         
            -
                    ITEM(ZSTD_OK_NoError) ITEM(ZSTD_ERROR_GENERIC) \
         
     | 
| 
       1242 
     | 
    
         
            -
                    ITEM(ZSTD_ERROR_MagicNumber) \
         
     | 
| 
       1243 
     | 
    
         
            -
                    ITEM(ZSTD_ERROR_SrcSize) ITEM(ZSTD_ERROR_maxDstSize_tooSmall) \
         
     | 
| 
       1244 
     | 
    
         
            -
                    ITEM(ZSTD_ERROR_corruption) \
         
     | 
| 
       1245 
     | 
    
         
            -
                    ITEM(ZSTD_ERROR_maxCode)
         
     | 
| 
       1246 
     | 
    
         
            -
             
     | 
| 
       1247 
     | 
    
         
            -
            #define ZSTD_GENERATE_ENUM(ENUM) ENUM,
         
     | 
| 
       1248 
     | 
    
         
            -
            typedef enum { ZSTD_LIST_ERRORS(ZSTD_GENERATE_ENUM) } ZSTD_errorCodes;   /* exposed list of errors; static linking only */
         
     | 
| 
       1249 
     | 
    
         
            -
             
     | 
| 
       1250 
1183 
     | 
    
         
             
            /*
         
     | 
| 
       1251 
1184 
     | 
    
         
             
                zstd - standard compression library
         
     | 
| 
       1252 
1185 
     | 
    
         
             
                Copyright (C) 2014-2015, Yann Collet.
         
     | 
| 
         @@ -1325,17 +1258,9 @@ typedef enum { ZSTD_LIST_ERRORS(ZSTD_GENERATE_ENUM) } ZSTD_errorCodes;   /* expo 
     | 
|
| 
       1325 
1258 
     | 
    
         
             
            #endif
         
     | 
| 
       1326 
1259 
     | 
    
         | 
| 
       1327 
1260 
     | 
    
         
             
            #ifdef _MSC_VER    /* Visual Studio */
         
     | 
| 
       1328 
     | 
    
         
            -
            #  define FORCE_INLINE static __forceinline
         
     | 
| 
       1329 
1261 
     | 
    
         
             
            #  include <intrin.h>                    /* For Visual 2005 */
         
     | 
| 
       1330 
1262 
     | 
    
         
             
            #  pragma warning(disable : 4127)        /* disable: C4127: conditional expression is constant */
         
     | 
| 
       1331 
1263 
     | 
    
         
             
            #  pragma warning(disable : 4324)        /* disable: C4324: padded structure */
         
     | 
| 
       1332 
     | 
    
         
            -
            #else
         
     | 
| 
       1333 
     | 
    
         
            -
            #  define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
         
     | 
| 
       1334 
     | 
    
         
            -
            #  ifdef __GNUC__
         
     | 
| 
       1335 
     | 
    
         
            -
            #    define FORCE_INLINE static inline __attribute__((always_inline))
         
     | 
| 
       1336 
     | 
    
         
            -
            #  else
         
     | 
| 
       1337 
     | 
    
         
            -
            #    define FORCE_INLINE static inline
         
     | 
| 
       1338 
     | 
    
         
            -
            #  endif
         
     | 
| 
       1339 
1264 
     | 
    
         
             
            #endif
         
     | 
| 
       1340 
1265 
     | 
    
         | 
| 
       1341 
1266 
     | 
    
         | 
| 
         @@ -1516,11 +1441,8 @@ typedef struct ZSTD_Cctx_s 
     | 
|
| 
       1516 
1441 
     | 
    
         
             
            /**************************************
         
     | 
| 
       1517 
1442 
     | 
    
         
             
            *  Error Management
         
     | 
| 
       1518 
1443 
     | 
    
         
             
            **************************************/
         
     | 
| 
       1519 
     | 
    
         
            -
            /* tells if a return value is an error code */
         
     | 
| 
       1520 
     | 
    
         
            -
            static unsigned ZSTD_isError(size_t code) { return (code > (size_t)(-ZSTD_ERROR_maxCode)); }
         
     | 
| 
       1521 
     | 
    
         
            -
             
     | 
| 
       1522 
1444 
     | 
    
         
             
            /* published entry point */
         
     | 
| 
       1523 
     | 
    
         
            -
            unsigned ZSTDv01_isError(size_t code) { return  
     | 
| 
      
 1445 
     | 
    
         
            +
            unsigned ZSTDv01_isError(size_t code) { return ERR_isError(code); }
         
     | 
| 
       1524 
1446 
     | 
    
         | 
| 
       1525 
1447 
     | 
    
         | 
| 
       1526 
1448 
     | 
    
         
             
            /**************************************
         
     | 
| 
         @@ -1535,13 +1457,13 @@ unsigned ZSTDv01_isError(size_t code) { return ZSTD_isError(code); } 
     | 
|
| 
       1535 
1457 
     | 
    
         
             
            *   Decompression code
         
     | 
| 
       1536 
1458 
     | 
    
         
             
            **************************************************************/
         
     | 
| 
       1537 
1459 
     | 
    
         | 
| 
       1538 
     | 
    
         
            -
             
     | 
| 
      
 1460 
     | 
    
         
            +
            size_t ZSTDv01_getcBlockSize(const void* src, size_t srcSize, blockProperties_t* bpPtr)
         
     | 
| 
       1539 
1461 
     | 
    
         
             
            {
         
     | 
| 
       1540 
1462 
     | 
    
         
             
                const BYTE* const in = (const BYTE* const)src;
         
     | 
| 
       1541 
1463 
     | 
    
         
             
                BYTE headerFlags;
         
     | 
| 
       1542 
1464 
     | 
    
         
             
                U32 cSize;
         
     | 
| 
       1543 
1465 
     | 
    
         | 
| 
       1544 
     | 
    
         
            -
                if (srcSize < 3) return ( 
     | 
| 
      
 1466 
     | 
    
         
            +
                if (srcSize < 3) return ERROR(srcSize_wrong);
         
     | 
| 
       1545 
1467 
     | 
    
         | 
| 
       1546 
1468 
     | 
    
         
             
                headerFlags = *in;
         
     | 
| 
       1547 
1469 
     | 
    
         
             
                cSize = in[2] + (in[1]<<8) + ((in[0] & 7)<<16);
         
     | 
| 
         @@ -1557,7 +1479,7 @@ static size_t ZSTD_getcBlockSize(const void* src, size_t srcSize, blockPropertie 
     | 
|
| 
       1557 
1479 
     | 
    
         | 
| 
       1558 
1480 
     | 
    
         
             
            static size_t ZSTD_copyUncompressedBlock(void* dst, size_t maxDstSize, const void* src, size_t srcSize)
         
     | 
| 
       1559 
1481 
     | 
    
         
             
            {
         
     | 
| 
       1560 
     | 
    
         
            -
                if (srcSize > maxDstSize) return ( 
     | 
| 
      
 1482 
     | 
    
         
            +
                if (srcSize > maxDstSize) return ERROR(dstSize_tooSmall);
         
     | 
| 
       1561 
1483 
     | 
    
         
             
                memcpy(dst, src, srcSize);
         
     | 
| 
       1562 
1484 
     | 
    
         
             
                return srcSize;
         
     | 
| 
       1563 
1485 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1574,21 +1496,21 @@ static size_t ZSTD_decompressLiterals(void* ctx, 
     | 
|
| 
       1574 
1496 
     | 
    
         
             
                size_t litSize;
         
     | 
| 
       1575 
1497 
     | 
    
         | 
| 
       1576 
1498 
     | 
    
         
             
                /* check : minimum 2, for litSize, +1, for content */
         
     | 
| 
       1577 
     | 
    
         
            -
                if (srcSize <= 3) return ( 
     | 
| 
      
 1499 
     | 
    
         
            +
                if (srcSize <= 3) return ERROR(corruption_detected);
         
     | 
| 
       1578 
1500 
     | 
    
         | 
| 
       1579 
1501 
     | 
    
         
             
                litSize = ip[1] + (ip[0]<<8);
         
     | 
| 
       1580 
1502 
     | 
    
         
             
                litSize += ((ip[-3] >> 3) & 7) << 16;   // mmmmh....
         
     | 
| 
       1581 
1503 
     | 
    
         
             
                op = oend - litSize;
         
     | 
| 
       1582 
1504 
     | 
    
         | 
| 
       1583 
1505 
     | 
    
         
             
                (void)ctx;
         
     | 
| 
       1584 
     | 
    
         
            -
                if (litSize > maxDstSize) return ( 
     | 
| 
      
 1506 
     | 
    
         
            +
                if (litSize > maxDstSize) return ERROR(dstSize_tooSmall);
         
     | 
| 
       1585 
1507 
     | 
    
         
             
                errorCode = HUF_decompress(op, litSize, ip+2, srcSize-2);
         
     | 
| 
       1586 
     | 
    
         
            -
                if (FSE_isError(errorCode)) return ( 
     | 
| 
      
 1508 
     | 
    
         
            +
                if (FSE_isError(errorCode)) return ERROR(GENERIC);
         
     | 
| 
       1587 
1509 
     | 
    
         
             
                return litSize;
         
     | 
| 
       1588 
1510 
     | 
    
         
             
            }
         
     | 
| 
       1589 
1511 
     | 
    
         | 
| 
       1590 
1512 
     | 
    
         | 
| 
       1591 
     | 
    
         
            -
             
     | 
| 
      
 1513 
     | 
    
         
            +
            size_t ZSTDv01_decodeLiteralsBlock(void* ctx,
         
     | 
| 
       1592 
1514 
     | 
    
         
             
                                            void* dst, size_t maxDstSize,
         
     | 
| 
       1593 
1515 
     | 
    
         
             
                                      const BYTE** litStart, size_t* litSize,
         
     | 
| 
       1594 
1516 
     | 
    
         
             
                                      const void* src, size_t srcSize)
         
     | 
| 
         @@ -1599,9 +1521,9 @@ static size_t ZSTD_decodeLiteralsBlock(void* ctx, 
     | 
|
| 
       1599 
1521 
     | 
    
         
             
                BYTE* const oend = ostart + maxDstSize;
         
     | 
| 
       1600 
1522 
     | 
    
         
             
                blockProperties_t litbp;
         
     | 
| 
       1601 
1523 
     | 
    
         | 
| 
       1602 
     | 
    
         
            -
                size_t litcSize =  
     | 
| 
       1603 
     | 
    
         
            -
                if ( 
     | 
| 
       1604 
     | 
    
         
            -
                if (litcSize > srcSize - ZSTD_blockHeaderSize) return ( 
     | 
| 
      
 1524 
     | 
    
         
            +
                size_t litcSize = ZSTDv01_getcBlockSize(src, srcSize, &litbp);
         
     | 
| 
      
 1525 
     | 
    
         
            +
                if (ZSTDv01_isError(litcSize)) return litcSize;
         
     | 
| 
      
 1526 
     | 
    
         
            +
                if (litcSize > srcSize - ZSTD_blockHeaderSize) return ERROR(srcSize_wrong);
         
     | 
| 
       1605 
1527 
     | 
    
         
             
                ip += ZSTD_blockHeaderSize;
         
     | 
| 
       1606 
1528 
     | 
    
         | 
| 
       1607 
1529 
     | 
    
         
             
                switch(litbp.blockType)
         
     | 
| 
         @@ -1614,7 +1536,8 @@ static size_t ZSTD_decodeLiteralsBlock(void* ctx, 
     | 
|
| 
       1614 
1536 
     | 
    
         
             
                case bt_rle:
         
     | 
| 
       1615 
1537 
     | 
    
         
             
                    {
         
     | 
| 
       1616 
1538 
     | 
    
         
             
                        size_t rleSize = litbp.origSize;
         
     | 
| 
       1617 
     | 
    
         
            -
                        if (rleSize>maxDstSize) return ( 
     | 
| 
      
 1539 
     | 
    
         
            +
                        if (rleSize>maxDstSize) return ERROR(dstSize_tooSmall);
         
     | 
| 
      
 1540 
     | 
    
         
            +
                        if (!srcSize) return ERROR(srcSize_wrong);
         
     | 
| 
       1618 
1541 
     | 
    
         
             
                        memset(oend - rleSize, *ip, rleSize);
         
     | 
| 
       1619 
1542 
     | 
    
         
             
                        *litStart = oend - rleSize;
         
     | 
| 
       1620 
1543 
     | 
    
         
             
                        *litSize = rleSize;
         
     | 
| 
         @@ -1624,7 +1547,7 @@ static size_t ZSTD_decodeLiteralsBlock(void* ctx, 
     | 
|
| 
       1624 
1547 
     | 
    
         
             
                case bt_compressed:
         
     | 
| 
       1625 
1548 
     | 
    
         
             
                    {
         
     | 
| 
       1626 
1549 
     | 
    
         
             
                        size_t decodedLitSize = ZSTD_decompressLiterals(ctx, dst, maxDstSize, ip, litcSize);
         
     | 
| 
       1627 
     | 
    
         
            -
                        if ( 
     | 
| 
      
 1550 
     | 
    
         
            +
                        if (ZSTDv01_isError(decodedLitSize)) return decodedLitSize;
         
     | 
| 
       1628 
1551 
     | 
    
         
             
                        *litStart = oend - decodedLitSize;
         
     | 
| 
       1629 
1552 
     | 
    
         
             
                        *litSize = decodedLitSize;
         
     | 
| 
       1630 
1553 
     | 
    
         
             
                        ip += litcSize;
         
     | 
| 
         @@ -1632,14 +1555,14 @@ static size_t ZSTD_decodeLiteralsBlock(void* ctx, 
     | 
|
| 
       1632 
1555 
     | 
    
         
             
                    }
         
     | 
| 
       1633 
1556 
     | 
    
         
             
                case bt_end:
         
     | 
| 
       1634 
1557 
     | 
    
         
             
                default:
         
     | 
| 
       1635 
     | 
    
         
            -
                    return ( 
     | 
| 
      
 1558 
     | 
    
         
            +
                    return ERROR(GENERIC);
         
     | 
| 
       1636 
1559 
     | 
    
         
             
                }
         
     | 
| 
       1637 
1560 
     | 
    
         | 
| 
       1638 
1561 
     | 
    
         
             
                return ip-istart;
         
     | 
| 
       1639 
1562 
     | 
    
         
             
            }
         
     | 
| 
       1640 
1563 
     | 
    
         | 
| 
       1641 
1564 
     | 
    
         | 
| 
       1642 
     | 
    
         
            -
             
     | 
| 
      
 1565 
     | 
    
         
            +
            size_t ZSTDv01_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t* dumpsLengthPtr,
         
     | 
| 
       1643 
1566 
     | 
    
         
             
                                     FSE_DTable* DTableLL, FSE_DTable* DTableML, FSE_DTable* DTableOffb,
         
     | 
| 
       1644 
1567 
     | 
    
         
             
                                     const void* src, size_t srcSize)
         
     | 
| 
       1645 
1568 
     | 
    
         
             
            {
         
     | 
| 
         @@ -1651,7 +1574,7 @@ static size_t ZSTD_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t* d 
     | 
|
| 
       1651 
1574 
     | 
    
         
             
                size_t dumpsLength;
         
     | 
| 
       1652 
1575 
     | 
    
         | 
| 
       1653 
1576 
     | 
    
         
             
                /* check */
         
     | 
| 
       1654 
     | 
    
         
            -
                if (srcSize < 5) return ( 
     | 
| 
      
 1577 
     | 
    
         
            +
                if (srcSize < 5) return ERROR(srcSize_wrong);
         
     | 
| 
       1655 
1578 
     | 
    
         | 
| 
       1656 
1579 
     | 
    
         
             
                /* SeqHead */
         
     | 
| 
       1657 
1580 
     | 
    
         
             
                *nbSeq = ZSTD_readLE16(ip); ip+=2;
         
     | 
| 
         @@ -1675,7 +1598,7 @@ static size_t ZSTD_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t* d 
     | 
|
| 
       1675 
1598 
     | 
    
         
             
                *dumpsLengthPtr = dumpsLength;
         
     | 
| 
       1676 
1599 
     | 
    
         | 
| 
       1677 
1600 
     | 
    
         
             
                /* check */
         
     | 
| 
       1678 
     | 
    
         
            -
                if (ip > iend-3) return ( 
     | 
| 
      
 1601 
     | 
    
         
            +
                if (ip > iend-3) return ERROR(srcSize_wrong); /* min : all 3 are "raw", hence no header, but at least xxLog bits per type */
         
     | 
| 
       1679 
1602 
     | 
    
         | 
| 
       1680 
1603 
     | 
    
         
             
                /* sequences */
         
     | 
| 
       1681 
1604 
     | 
    
         
             
                {
         
     | 
| 
         @@ -1685,7 +1608,6 @@ static size_t ZSTD_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t* d 
     | 
|
| 
       1685 
1608 
     | 
    
         
             
                    /* Build DTables */
         
     | 
| 
       1686 
1609 
     | 
    
         
             
                    switch(LLtype)
         
     | 
| 
       1687 
1610 
     | 
    
         
             
                    {
         
     | 
| 
       1688 
     | 
    
         
            -
                    U32 max;
         
     | 
| 
       1689 
1611 
     | 
    
         
             
                    case bt_rle :
         
     | 
| 
       1690 
1612 
     | 
    
         
             
                        LLlog = 0;
         
     | 
| 
       1691 
1613 
     | 
    
         
             
                        FSE_buildDTable_rle(DTableLL, *ip++); break;
         
     | 
| 
         @@ -1693,52 +1615,49 @@ static size_t ZSTD_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t* d 
     | 
|
| 
       1693 
1615 
     | 
    
         
             
                        LLlog = LLbits;
         
     | 
| 
       1694 
1616 
     | 
    
         
             
                        FSE_buildDTable_raw(DTableLL, LLbits); break;
         
     | 
| 
       1695 
1617 
     | 
    
         
             
                    default :
         
     | 
| 
       1696 
     | 
    
         
            -
                        max = MaxLL;
         
     | 
| 
       1697 
     | 
    
         
            -
             
     | 
| 
       1698 
     | 
    
         
            -
             
     | 
| 
       1699 
     | 
    
         
            -
             
     | 
| 
       1700 
     | 
    
         
            -
             
     | 
| 
       1701 
     | 
    
         
            -
             
     | 
| 
       1702 
     | 
    
         
            -
                    }
         
     | 
| 
      
 1618 
     | 
    
         
            +
                        {   U32 max = MaxLL;
         
     | 
| 
      
 1619 
     | 
    
         
            +
                            headerSize = FSE_readNCount(norm, &max, &LLlog, ip, iend-ip);
         
     | 
| 
      
 1620 
     | 
    
         
            +
                            if (FSE_isError(headerSize)) return ERROR(GENERIC);
         
     | 
| 
      
 1621 
     | 
    
         
            +
                            if (LLlog > LLFSELog) return ERROR(corruption_detected);
         
     | 
| 
      
 1622 
     | 
    
         
            +
                            ip += headerSize;
         
     | 
| 
      
 1623 
     | 
    
         
            +
                            FSE_buildDTable(DTableLL, norm, max, LLlog);
         
     | 
| 
      
 1624 
     | 
    
         
            +
                    }   }
         
     | 
| 
       1703 
1625 
     | 
    
         | 
| 
       1704 
1626 
     | 
    
         
             
                    switch(Offtype)
         
     | 
| 
       1705 
1627 
     | 
    
         
             
                    {
         
     | 
| 
       1706 
     | 
    
         
            -
                    U32 max;
         
     | 
| 
       1707 
1628 
     | 
    
         
             
                    case bt_rle :
         
     | 
| 
       1708 
1629 
     | 
    
         
             
                        Offlog = 0;
         
     | 
| 
       1709 
     | 
    
         
            -
                        if (ip > iend-2) return ( 
     | 
| 
      
 1630 
     | 
    
         
            +
                        if (ip > iend-2) return ERROR(srcSize_wrong); /* min : "raw", hence no header, but at least xxLog bits */
         
     | 
| 
       1710 
1631 
     | 
    
         
             
                        FSE_buildDTable_rle(DTableOffb, *ip++); break;
         
     | 
| 
       1711 
1632 
     | 
    
         
             
                    case bt_raw :
         
     | 
| 
       1712 
1633 
     | 
    
         
             
                        Offlog = Offbits;
         
     | 
| 
       1713 
1634 
     | 
    
         
             
                        FSE_buildDTable_raw(DTableOffb, Offbits); break;
         
     | 
| 
       1714 
1635 
     | 
    
         
             
                    default :
         
     | 
| 
       1715 
     | 
    
         
            -
                        max = MaxOff;
         
     | 
| 
       1716 
     | 
    
         
            -
             
     | 
| 
       1717 
     | 
    
         
            -
             
     | 
| 
       1718 
     | 
    
         
            -
             
     | 
| 
       1719 
     | 
    
         
            -
             
     | 
| 
       1720 
     | 
    
         
            -
             
     | 
| 
       1721 
     | 
    
         
            -
                    }
         
     | 
| 
      
 1636 
     | 
    
         
            +
                        {   U32 max = MaxOff;
         
     | 
| 
      
 1637 
     | 
    
         
            +
                            headerSize = FSE_readNCount(norm, &max, &Offlog, ip, iend-ip);
         
     | 
| 
      
 1638 
     | 
    
         
            +
                            if (FSE_isError(headerSize)) return ERROR(GENERIC);
         
     | 
| 
      
 1639 
     | 
    
         
            +
                            if (Offlog > OffFSELog) return ERROR(corruption_detected);
         
     | 
| 
      
 1640 
     | 
    
         
            +
                            ip += headerSize;
         
     | 
| 
      
 1641 
     | 
    
         
            +
                            FSE_buildDTable(DTableOffb, norm, max, Offlog);
         
     | 
| 
      
 1642 
     | 
    
         
            +
                    }   }
         
     | 
| 
       1722 
1643 
     | 
    
         | 
| 
       1723 
1644 
     | 
    
         
             
                    switch(MLtype)
         
     | 
| 
       1724 
1645 
     | 
    
         
             
                    {
         
     | 
| 
       1725 
     | 
    
         
            -
                    U32 max;
         
     | 
| 
       1726 
1646 
     | 
    
         
             
                    case bt_rle :
         
     | 
| 
       1727 
1647 
     | 
    
         
             
                        MLlog = 0;
         
     | 
| 
       1728 
     | 
    
         
            -
                        if (ip > iend-2) return ( 
     | 
| 
      
 1648 
     | 
    
         
            +
                        if (ip > iend-2) return ERROR(srcSize_wrong); /* min : "raw", hence no header, but at least xxLog bits */
         
     | 
| 
       1729 
1649 
     | 
    
         
             
                        FSE_buildDTable_rle(DTableML, *ip++); break;
         
     | 
| 
       1730 
1650 
     | 
    
         
             
                    case bt_raw :
         
     | 
| 
       1731 
1651 
     | 
    
         
             
                        MLlog = MLbits;
         
     | 
| 
       1732 
1652 
     | 
    
         
             
                        FSE_buildDTable_raw(DTableML, MLbits); break;
         
     | 
| 
       1733 
1653 
     | 
    
         
             
                    default :
         
     | 
| 
       1734 
     | 
    
         
            -
                        max = MaxML;
         
     | 
| 
       1735 
     | 
    
         
            -
             
     | 
| 
       1736 
     | 
    
         
            -
             
     | 
| 
       1737 
     | 
    
         
            -
             
     | 
| 
       1738 
     | 
    
         
            -
             
     | 
| 
       1739 
     | 
    
         
            -
             
     | 
| 
       1740 
     | 
    
         
            -
             
     | 
| 
       1741 
     | 
    
         
            -
                }
         
     | 
| 
      
 1654 
     | 
    
         
            +
                        {   U32 max = MaxML;
         
     | 
| 
      
 1655 
     | 
    
         
            +
                            headerSize = FSE_readNCount(norm, &max, &MLlog, ip, iend-ip);
         
     | 
| 
      
 1656 
     | 
    
         
            +
                            if (FSE_isError(headerSize)) return ERROR(GENERIC);
         
     | 
| 
      
 1657 
     | 
    
         
            +
                            if (MLlog > MLFSELog) return ERROR(corruption_detected);
         
     | 
| 
      
 1658 
     | 
    
         
            +
                            ip += headerSize;
         
     | 
| 
      
 1659 
     | 
    
         
            +
                            FSE_buildDTable(DTableML, norm, max, MLlog);
         
     | 
| 
      
 1660 
     | 
    
         
            +
                }   }   }
         
     | 
| 
       1742 
1661 
     | 
    
         | 
| 
       1743 
1662 
     | 
    
         
             
                return ip-istart;
         
     | 
| 
       1744 
1663 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1838,9 +1757,9 @@ static size_t ZSTD_execSequence(BYTE* op, 
     | 
|
| 
       1838 
1757 
     | 
    
         
             
                const BYTE* const litEnd = *litPtr + litLength;
         
     | 
| 
       1839 
1758 
     | 
    
         | 
| 
       1840 
1759 
     | 
    
         
             
                /* check */
         
     | 
| 
       1841 
     | 
    
         
            -
                if (endMatch > oend) return ( 
     | 
| 
       1842 
     | 
    
         
            -
                if (litEnd > litLimit) return ( 
     | 
| 
       1843 
     | 
    
         
            -
                if (sequence.matchLength > (size_t)(*litPtr-op))  return ( 
     | 
| 
      
 1760 
     | 
    
         
            +
                if (endMatch > oend) return ERROR(dstSize_tooSmall);   /* overwrite beyond dst buffer */
         
     | 
| 
      
 1761 
     | 
    
         
            +
                if (litEnd > litLimit) return ERROR(corruption_detected);
         
     | 
| 
      
 1762 
     | 
    
         
            +
                if (sequence.matchLength > (size_t)(*litPtr-op))  return ERROR(dstSize_tooSmall);    /* overwrite literal segment */
         
     | 
| 
       1844 
1763 
     | 
    
         | 
| 
       1845 
1764 
     | 
    
         
             
                /* copy Literals */
         
     | 
| 
       1846 
1765 
     | 
    
         
             
                if (((size_t)(*litPtr - op) < 8) || ((size_t)(oend-litEnd) < 8) || (op+litLength > oend-8))
         
     | 
| 
         @@ -1851,7 +1770,7 @@ static size_t ZSTD_execSequence(BYTE* op, 
     | 
|
| 
       1851 
1770 
     | 
    
         
             
                *litPtr = litEnd;   /* update for next sequence */
         
     | 
| 
       1852 
1771 
     | 
    
         | 
| 
       1853 
1772 
     | 
    
         
             
                /* check : last match must be at a minimum distance of 8 from end of dest buffer */
         
     | 
| 
       1854 
     | 
    
         
            -
                if (oend-op < 8) return ( 
     | 
| 
      
 1773 
     | 
    
         
            +
                if (oend-op < 8) return ERROR(dstSize_tooSmall);
         
     | 
| 
       1855 
1774 
     | 
    
         | 
| 
       1856 
1775 
     | 
    
         
             
                /* copy Match */
         
     | 
| 
       1857 
1776 
     | 
    
         
             
                {
         
     | 
| 
         @@ -1861,8 +1780,8 @@ static size_t ZSTD_execSequence(BYTE* op, 
     | 
|
| 
       1861 
1780 
     | 
    
         
             
                    U64 saved[2];
         
     | 
| 
       1862 
1781 
     | 
    
         | 
| 
       1863 
1782 
     | 
    
         
             
                    /* check */
         
     | 
| 
       1864 
     | 
    
         
            -
                    if (match < base) return ( 
     | 
| 
       1865 
     | 
    
         
            -
                    if (sequence.offset > (size_t)base) return ( 
     | 
| 
      
 1783 
     | 
    
         
            +
                    if (match < base) return ERROR(corruption_detected);
         
     | 
| 
      
 1784 
     | 
    
         
            +
                    if (sequence.offset > (size_t)base) return ERROR(corruption_detected);
         
     | 
| 
       1866 
1785 
     | 
    
         | 
| 
       1867 
1786 
     | 
    
         
             
                    /* save beginning of literal sequence, in case of write overlap */
         
     | 
| 
       1868 
1787 
     | 
    
         
             
                    if (overlapRisk)
         
     | 
| 
         @@ -1940,10 +1859,10 @@ static size_t ZSTD_decompressSequences( 
     | 
|
| 
       1940 
1859 
     | 
    
         
             
                BYTE* const base = (BYTE*) (dctx->base);
         
     | 
| 
       1941 
1860 
     | 
    
         | 
| 
       1942 
1861 
     | 
    
         
             
                /* Build Decoding Tables */
         
     | 
| 
       1943 
     | 
    
         
            -
                errorCode =  
     | 
| 
      
 1862 
     | 
    
         
            +
                errorCode = ZSTDv01_decodeSeqHeaders(&nbSeq, &dumps, &dumpsLength,
         
     | 
| 
       1944 
1863 
     | 
    
         
             
                                                  DTableLL, DTableML, DTableOffb,
         
     | 
| 
       1945 
1864 
     | 
    
         
             
                                                  ip, iend-ip);
         
     | 
| 
       1946 
     | 
    
         
            -
                if ( 
     | 
| 
      
 1865 
     | 
    
         
            +
                if (ZSTDv01_isError(errorCode)) return errorCode;
         
     | 
| 
       1947 
1866 
     | 
    
         
             
                ip += errorCode;
         
     | 
| 
       1948 
1867 
     | 
    
         | 
| 
       1949 
1868 
     | 
    
         
             
                /* Regen sequences */
         
     | 
| 
         @@ -1956,7 +1875,7 @@ static size_t ZSTD_decompressSequences( 
     | 
|
| 
       1956 
1875 
     | 
    
         
             
                    seqState.dumpsEnd = dumps + dumpsLength;
         
     | 
| 
       1957 
1876 
     | 
    
         
             
                    seqState.prevOffset = 1;
         
     | 
| 
       1958 
1877 
     | 
    
         
             
                    errorCode = FSE_initDStream(&(seqState.DStream), ip, iend-ip);
         
     | 
| 
       1959 
     | 
    
         
            -
                    if (FSE_isError(errorCode)) return ( 
     | 
| 
      
 1878 
     | 
    
         
            +
                    if (FSE_isError(errorCode)) return ERROR(corruption_detected);
         
     | 
| 
       1960 
1879 
     | 
    
         
             
                    FSE_initDState(&(seqState.stateLL), &(seqState.DStream), DTableLL);
         
     | 
| 
       1961 
1880 
     | 
    
         
             
                    FSE_initDState(&(seqState.stateOffb), &(seqState.DStream), DTableOffb);
         
     | 
| 
       1962 
1881 
     | 
    
         
             
                    FSE_initDState(&(seqState.stateML), &(seqState.DStream), DTableML);
         
     | 
| 
         @@ -1967,18 +1886,18 @@ static size_t ZSTD_decompressSequences( 
     | 
|
| 
       1967 
1886 
     | 
    
         
             
                        nbSeq--;
         
     | 
| 
       1968 
1887 
     | 
    
         
             
                        ZSTD_decodeSequence(&sequence, &seqState);
         
     | 
| 
       1969 
1888 
     | 
    
         
             
                        oneSeqSize = ZSTD_execSequence(op, sequence, &litPtr, litEnd, base, oend);
         
     | 
| 
       1970 
     | 
    
         
            -
                        if ( 
     | 
| 
      
 1889 
     | 
    
         
            +
                        if (ZSTDv01_isError(oneSeqSize)) return oneSeqSize;
         
     | 
| 
       1971 
1890 
     | 
    
         
             
                        op += oneSeqSize;
         
     | 
| 
       1972 
1891 
     | 
    
         
             
                    }
         
     | 
| 
       1973 
1892 
     | 
    
         | 
| 
       1974 
1893 
     | 
    
         
             
                    /* check if reached exact end */
         
     | 
| 
       1975 
     | 
    
         
            -
                    if ( !FSE_endOfDStream(&(seqState.DStream)) ) return ( 
     | 
| 
       1976 
     | 
    
         
            -
                    if (nbSeq<0) return ( 
     | 
| 
      
 1894 
     | 
    
         
            +
                    if ( !FSE_endOfDStream(&(seqState.DStream)) ) return ERROR(corruption_detected);   /* requested too much : data is corrupted */
         
     | 
| 
      
 1895 
     | 
    
         
            +
                    if (nbSeq<0) return ERROR(corruption_detected);   /* requested too many sequences : data is corrupted */
         
     | 
| 
       1977 
1896 
     | 
    
         | 
| 
       1978 
1897 
     | 
    
         
             
                    /* last literal segment */
         
     | 
| 
       1979 
1898 
     | 
    
         
             
                    {
         
     | 
| 
       1980 
1899 
     | 
    
         
             
                        size_t lastLLSize = litEnd - litPtr;
         
     | 
| 
       1981 
     | 
    
         
            -
                        if (op+lastLLSize > oend) return ( 
     | 
| 
      
 1900 
     | 
    
         
            +
                        if (op+lastLLSize > oend) return ERROR(dstSize_tooSmall);
         
     | 
| 
       1982 
1901 
     | 
    
         
             
                        if (op != litPtr) memmove(op, litPtr, lastLLSize);
         
     | 
| 
       1983 
1902 
     | 
    
         
             
                        op += lastLLSize;
         
     | 
| 
       1984 
1903 
     | 
    
         
             
                    }
         
     | 
| 
         @@ -2000,8 +1919,8 @@ static size_t ZSTD_decompressBlock( 
     | 
|
| 
       2000 
1919 
     | 
    
         
             
                size_t errorCode;
         
     | 
| 
       2001 
1920 
     | 
    
         | 
| 
       2002 
1921 
     | 
    
         
             
                /* Decode literals sub-block */
         
     | 
| 
       2003 
     | 
    
         
            -
                errorCode =  
     | 
| 
       2004 
     | 
    
         
            -
                if ( 
     | 
| 
      
 1922 
     | 
    
         
            +
                errorCode = ZSTDv01_decodeLiteralsBlock(ctx, dst, maxDstSize, &litPtr, &litSize, src, srcSize);
         
     | 
| 
      
 1923 
     | 
    
         
            +
                if (ZSTDv01_isError(errorCode)) return errorCode;
         
     | 
| 
       2005 
1924 
     | 
    
         
             
                ip += errorCode;
         
     | 
| 
       2006 
1925 
     | 
    
         
             
                srcSize -= errorCode;
         
     | 
| 
       2007 
1926 
     | 
    
         | 
| 
         @@ -2022,20 +1941,20 @@ size_t ZSTDv01_decompressDCtx(void* ctx, void* dst, size_t maxDstSize, const voi 
     | 
|
| 
       2022 
1941 
     | 
    
         
             
                blockProperties_t blockProperties;
         
     | 
| 
       2023 
1942 
     | 
    
         | 
| 
       2024 
1943 
     | 
    
         
             
                /* Frame Header */
         
     | 
| 
       2025 
     | 
    
         
            -
                if (srcSize < ZSTD_frameHeaderSize+ZSTD_blockHeaderSize) return ( 
     | 
| 
      
 1944 
     | 
    
         
            +
                if (srcSize < ZSTD_frameHeaderSize+ZSTD_blockHeaderSize) return ERROR(srcSize_wrong);
         
     | 
| 
       2026 
1945 
     | 
    
         
             
                magicNumber = ZSTD_readBE32(src);
         
     | 
| 
       2027 
     | 
    
         
            -
                if (magicNumber != ZSTD_magicNumber) return ( 
     | 
| 
      
 1946 
     | 
    
         
            +
                if (magicNumber != ZSTD_magicNumber) return ERROR(prefix_unknown);
         
     | 
| 
       2028 
1947 
     | 
    
         
             
                ip += ZSTD_frameHeaderSize; remainingSize -= ZSTD_frameHeaderSize;
         
     | 
| 
       2029 
1948 
     | 
    
         | 
| 
       2030 
1949 
     | 
    
         
             
                /* Loop on each block */
         
     | 
| 
       2031 
1950 
     | 
    
         
             
                while (1)
         
     | 
| 
       2032 
1951 
     | 
    
         
             
                {
         
     | 
| 
       2033 
     | 
    
         
            -
                    size_t blockSize =  
     | 
| 
       2034 
     | 
    
         
            -
                    if ( 
     | 
| 
      
 1952 
     | 
    
         
            +
                    size_t blockSize = ZSTDv01_getcBlockSize(ip, iend-ip, &blockProperties);
         
     | 
| 
      
 1953 
     | 
    
         
            +
                    if (ZSTDv01_isError(blockSize)) return blockSize;
         
     | 
| 
       2035 
1954 
     | 
    
         | 
| 
       2036 
1955 
     | 
    
         
             
                    ip += ZSTD_blockHeaderSize;
         
     | 
| 
       2037 
1956 
     | 
    
         
             
                    remainingSize -= ZSTD_blockHeaderSize;
         
     | 
| 
       2038 
     | 
    
         
            -
                    if (blockSize > remainingSize) return ( 
     | 
| 
      
 1957 
     | 
    
         
            +
                    if (blockSize > remainingSize) return ERROR(srcSize_wrong);
         
     | 
| 
       2039 
1958 
     | 
    
         | 
| 
       2040 
1959 
     | 
    
         
             
                    switch(blockProperties.blockType)
         
     | 
| 
       2041 
1960 
     | 
    
         
             
                    {
         
     | 
| 
         @@ -2046,18 +1965,18 @@ size_t ZSTDv01_decompressDCtx(void* ctx, void* dst, size_t maxDstSize, const voi 
     | 
|
| 
       2046 
1965 
     | 
    
         
             
                        errorCode = ZSTD_copyUncompressedBlock(op, oend-op, ip, blockSize);
         
     | 
| 
       2047 
1966 
     | 
    
         
             
                        break;
         
     | 
| 
       2048 
1967 
     | 
    
         
             
                    case bt_rle :
         
     | 
| 
       2049 
     | 
    
         
            -
                        return ( 
     | 
| 
      
 1968 
     | 
    
         
            +
                        return ERROR(GENERIC);   /* not yet supported */
         
     | 
| 
       2050 
1969 
     | 
    
         
             
                        break;
         
     | 
| 
       2051 
1970 
     | 
    
         
             
                    case bt_end :
         
     | 
| 
       2052 
1971 
     | 
    
         
             
                        /* end of frame */
         
     | 
| 
       2053 
     | 
    
         
            -
                        if (remainingSize) return ( 
     | 
| 
      
 1972 
     | 
    
         
            +
                        if (remainingSize) return ERROR(srcSize_wrong);
         
     | 
| 
       2054 
1973 
     | 
    
         
             
                        break;
         
     | 
| 
       2055 
1974 
     | 
    
         
             
                    default:
         
     | 
| 
       2056 
     | 
    
         
            -
                        return ( 
     | 
| 
      
 1975 
     | 
    
         
            +
                        return ERROR(GENERIC);
         
     | 
| 
       2057 
1976 
     | 
    
         
             
                    }
         
     | 
| 
       2058 
1977 
     | 
    
         
             
                    if (blockSize == 0) break;   /* bt_end */
         
     | 
| 
       2059 
1978 
     | 
    
         | 
| 
       2060 
     | 
    
         
            -
                    if ( 
     | 
| 
      
 1979 
     | 
    
         
            +
                    if (ZSTDv01_isError(errorCode)) return errorCode;
         
     | 
| 
       2061 
1980 
     | 
    
         
             
                    op += errorCode;
         
     | 
| 
       2062 
1981 
     | 
    
         
             
                    ip += blockSize;
         
     | 
| 
       2063 
1982 
     | 
    
         
             
                    remainingSize -= blockSize;
         
     | 
| 
         @@ -2111,7 +2030,7 @@ size_t ZSTDv01_decompressContinue(ZSTDv01_Dctx* dctx, void* dst, size_t maxDstSi 
     | 
|
| 
       2111 
2030 
     | 
    
         
             
                dctx_t* ctx = (dctx_t*)dctx;
         
     | 
| 
       2112 
2031 
     | 
    
         | 
| 
       2113 
2032 
     | 
    
         
             
                /* Sanity check */
         
     | 
| 
       2114 
     | 
    
         
            -
                if (srcSize != ctx->expected) return ( 
     | 
| 
      
 2033 
     | 
    
         
            +
                if (srcSize != ctx->expected) return ERROR(srcSize_wrong);
         
     | 
| 
       2115 
2034 
     | 
    
         
             
                if (dst != ctx->previousDstEnd)  /* not contiguous */
         
     | 
| 
       2116 
2035 
     | 
    
         
             
                    ctx->base = dst;
         
     | 
| 
       2117 
2036 
     | 
    
         | 
| 
         @@ -2120,7 +2039,7 @@ size_t ZSTDv01_decompressContinue(ZSTDv01_Dctx* dctx, void* dst, size_t maxDstSi 
     | 
|
| 
       2120 
2039 
     | 
    
         
             
                {
         
     | 
| 
       2121 
2040 
     | 
    
         
             
                    /* Check frame magic header */
         
     | 
| 
       2122 
2041 
     | 
    
         
             
                    U32 magicNumber = ZSTD_readBE32(src);
         
     | 
| 
       2123 
     | 
    
         
            -
                    if (magicNumber != ZSTD_magicNumber) return ( 
     | 
| 
      
 2042 
     | 
    
         
            +
                    if (magicNumber != ZSTD_magicNumber) return ERROR(prefix_unknown);
         
     | 
| 
       2124 
2043 
     | 
    
         
             
                    ctx->phase = 1;
         
     | 
| 
       2125 
2044 
     | 
    
         
             
                    ctx->expected = ZSTD_blockHeaderSize;
         
     | 
| 
       2126 
2045 
     | 
    
         
             
                    return 0;
         
     | 
| 
         @@ -2130,8 +2049,8 @@ size_t ZSTDv01_decompressContinue(ZSTDv01_Dctx* dctx, void* dst, size_t maxDstSi 
     | 
|
| 
       2130 
2049 
     | 
    
         
             
                if (ctx->phase == 1)
         
     | 
| 
       2131 
2050 
     | 
    
         
             
                {
         
     | 
| 
       2132 
2051 
     | 
    
         
             
                    blockProperties_t bp;
         
     | 
| 
       2133 
     | 
    
         
            -
                    size_t blockSize =  
     | 
| 
       2134 
     | 
    
         
            -
                    if ( 
     | 
| 
      
 2052 
     | 
    
         
            +
                    size_t blockSize = ZSTDv01_getcBlockSize(src, ZSTD_blockHeaderSize, &bp);
         
     | 
| 
      
 2053 
     | 
    
         
            +
                    if (ZSTDv01_isError(blockSize)) return blockSize;
         
     | 
| 
       2135 
2054 
     | 
    
         
             
                    if (bp.blockType == bt_end)
         
     | 
| 
       2136 
2055 
     | 
    
         
             
                    {
         
     | 
| 
       2137 
2056 
     | 
    
         
             
                        ctx->expected = 0;
         
     | 
| 
         @@ -2159,13 +2078,13 @@ size_t ZSTDv01_decompressContinue(ZSTDv01_Dctx* dctx, void* dst, size_t maxDstSi 
     | 
|
| 
       2159 
2078 
     | 
    
         
             
                        rSize = ZSTD_copyUncompressedBlock(dst, maxDstSize, src, srcSize);
         
     | 
| 
       2160 
2079 
     | 
    
         
             
                        break;
         
     | 
| 
       2161 
2080 
     | 
    
         
             
                    case bt_rle :
         
     | 
| 
       2162 
     | 
    
         
            -
                        return ( 
     | 
| 
      
 2081 
     | 
    
         
            +
                        return ERROR(GENERIC);   /* not yet handled */
         
     | 
| 
       2163 
2082 
     | 
    
         
             
                        break;
         
     | 
| 
       2164 
2083 
     | 
    
         
             
                    case bt_end :   /* should never happen (filtered at phase 1) */
         
     | 
| 
       2165 
2084 
     | 
    
         
             
                        rSize = 0;
         
     | 
| 
       2166 
2085 
     | 
    
         
             
                        break;
         
     | 
| 
       2167 
2086 
     | 
    
         
             
                    default:
         
     | 
| 
       2168 
     | 
    
         
            -
                        return ( 
     | 
| 
      
 2087 
     | 
    
         
            +
                        return ERROR(GENERIC);
         
     | 
| 
       2169 
2088 
     | 
    
         
             
                    }
         
     | 
| 
       2170 
2089 
     | 
    
         
             
                    ctx->phase = 1;
         
     | 
| 
       2171 
2090 
     | 
    
         
             
                    ctx->expected = ZSTD_blockHeaderSize;
         
     | 
| 
         @@ -2174,5 +2093,3 @@ size_t ZSTDv01_decompressContinue(ZSTDv01_Dctx* dctx, void* dst, size_t maxDstSi 
     | 
|
| 
       2174 
2093 
     | 
    
         
             
                }
         
     | 
| 
       2175 
2094 
     | 
    
         | 
| 
       2176 
2095 
     | 
    
         
             
            }
         
     | 
| 
       2177 
     | 
    
         
            -
             
     | 
| 
       2178 
     | 
    
         
            -
             
     | 
| 
         @@ -1,36 +1,14 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            /**
         
     | 
| 
      
 2 
     | 
    
         
            +
             * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
         
     | 
| 
      
 3 
     | 
    
         
            +
             * All rights reserved.
         
     | 
| 
      
 4 
     | 
    
         
            +
             *
         
     | 
| 
      
 5 
     | 
    
         
            +
             * This source code is licensed under the BSD-style license found in the
         
     | 
| 
      
 6 
     | 
    
         
            +
             * LICENSE file in the root directory of this source tree. An additional grant
         
     | 
| 
      
 7 
     | 
    
         
            +
             * of patent rights can be found in the PATENTS file in the same directory.
         
     | 
| 
      
 8 
     | 
    
         
            +
             */
         
     | 
| 
       7 
9 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                met:
         
     | 
| 
       11 
     | 
    
         
            -
                * Redistributions of source code must retain the above copyright
         
     | 
| 
       12 
     | 
    
         
            -
                notice, this list of conditions and the following disclaimer.
         
     | 
| 
       13 
     | 
    
         
            -
                * Redistributions in binary form must reproduce the above
         
     | 
| 
       14 
     | 
    
         
            -
                copyright notice, this list of conditions and the following disclaimer
         
     | 
| 
       15 
     | 
    
         
            -
                in the documentation and/or other materials provided with the
         
     | 
| 
       16 
     | 
    
         
            -
                distribution.
         
     | 
| 
       17 
     | 
    
         
            -
                THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
         
     | 
| 
       18 
     | 
    
         
            -
                "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
         
     | 
| 
       19 
     | 
    
         
            -
                LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
         
     | 
| 
       20 
     | 
    
         
            -
                A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
         
     | 
| 
       21 
     | 
    
         
            -
                OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
         
     | 
| 
       22 
     | 
    
         
            -
                SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
         
     | 
| 
       23 
     | 
    
         
            -
                LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
         
     | 
| 
       24 
     | 
    
         
            -
                DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
         
     | 
| 
       25 
     | 
    
         
            -
                THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
         
     | 
| 
       26 
     | 
    
         
            -
                (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
         
     | 
| 
       27 
     | 
    
         
            -
                OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                You can contact the author at :
         
     | 
| 
       30 
     | 
    
         
            -
                - zstd source repository : https://github.com/Cyan4973/zstd
         
     | 
| 
       31 
     | 
    
         
            -
                - ztsd public forum : https://groups.google.com/forum/#!forum/lz4c
         
     | 
| 
       32 
     | 
    
         
            -
            */
         
     | 
| 
       33 
     | 
    
         
            -
            #pragma once
         
     | 
| 
      
 10 
     | 
    
         
            +
            #ifndef ZSTD_V01_H_28739879432
         
     | 
| 
      
 11 
     | 
    
         
            +
            #define ZSTD_V01_H_28739879432
         
     | 
| 
       34 
12 
     | 
    
         | 
| 
       35 
13 
     | 
    
         
             
            #if defined (__cplusplus)
         
     | 
| 
       36 
14 
     | 
    
         
             
            extern "C" {
         
     | 
| 
         @@ -98,3 +76,5 @@ size_t ZSTDv01_decompressContinue(ZSTDv01_Dctx* dctx, void* dst, size_t maxDstSi 
     | 
|
| 
       98 
76 
     | 
    
         
             
            #if defined (__cplusplus)
         
     | 
| 
       99 
77 
     | 
    
         
             
            }
         
     | 
| 
       100 
78 
     | 
    
         
             
            #endif
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
            #endif /* ZSTD_V01_H_28739879432 */
         
     |