extzstd 0.0.3.CONCEPT → 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/HISTORY.ja +5 -0
  3. data/LICENSE +6 -6
  4. data/README.md +35 -22
  5. data/contrib/zstd/LICENSE +13 -9
  6. data/contrib/zstd/README.md +37 -44
  7. data/contrib/zstd/common/entropy_common.c +33 -39
  8. data/contrib/zstd/common/error_private.c +43 -0
  9. data/contrib/zstd/common/error_private.h +11 -60
  10. data/contrib/zstd/common/fse.h +11 -5
  11. data/contrib/zstd/common/fse_decompress.c +14 -16
  12. data/contrib/zstd/common/huf.h +1 -1
  13. data/contrib/zstd/common/mem.h +36 -43
  14. data/contrib/zstd/common/xxhash.c +31 -18
  15. data/contrib/zstd/common/xxhash.h +71 -35
  16. data/contrib/zstd/common/zbuff.h +29 -35
  17. data/contrib/zstd/common/zstd_common.c +24 -32
  18. data/contrib/zstd/common/zstd_errors.h +60 -0
  19. data/contrib/zstd/common/zstd_internal.h +109 -80
  20. data/contrib/zstd/compress/fse_compress.c +9 -6
  21. data/contrib/zstd/compress/huf_compress.c +30 -74
  22. data/contrib/zstd/compress/zbuff_compress.c +43 -51
  23. data/contrib/zstd/compress/zstd_compress.c +953 -763
  24. data/contrib/zstd/compress/zstd_opt.h +115 -261
  25. data/contrib/zstd/decompress/huf_decompress.c +29 -40
  26. data/contrib/zstd/decompress/zbuff_decompress.c +36 -78
  27. data/contrib/zstd/decompress/zstd_decompress.c +976 -496
  28. data/contrib/zstd/dictBuilder/divsufsort.h +5 -5
  29. data/contrib/zstd/dictBuilder/zdict.c +194 -229
  30. data/contrib/zstd/dictBuilder/zdict.h +66 -68
  31. data/contrib/zstd/legacy/zstd_legacy.h +168 -49
  32. data/contrib/zstd/legacy/zstd_v01.c +95 -178
  33. data/contrib/zstd/legacy/zstd_v01.h +12 -32
  34. data/contrib/zstd/legacy/zstd_v02.c +48 -274
  35. data/contrib/zstd/legacy/zstd_v02.h +12 -32
  36. data/contrib/zstd/legacy/zstd_v03.c +48 -274
  37. data/contrib/zstd/legacy/zstd_v03.h +12 -32
  38. data/contrib/zstd/legacy/zstd_v04.c +63 -320
  39. data/contrib/zstd/legacy/zstd_v04.h +13 -33
  40. data/contrib/zstd/legacy/zstd_v05.c +80 -345
  41. data/contrib/zstd/legacy/zstd_v05.h +9 -31
  42. data/contrib/zstd/legacy/zstd_v06.c +48 -458
  43. data/contrib/zstd/legacy/zstd_v06.h +41 -67
  44. data/contrib/zstd/legacy/zstd_v07.c +4544 -0
  45. data/contrib/zstd/legacy/zstd_v07.h +173 -0
  46. data/contrib/zstd/zstd.h +640 -0
  47. data/ext/extconf.rb +7 -3
  48. data/ext/extzstd.c +263 -106
  49. data/ext/extzstd.h +8 -6
  50. data/ext/extzstd_nogvls.h +0 -117
  51. data/ext/extzstd_stream.c +347 -0
  52. data/ext/zstd_common.c +8 -0
  53. data/ext/zstd_compress.c +6 -0
  54. data/ext/zstd_decompress.c +5 -0
  55. data/ext/zstd_dictbuilder.c +5 -0
  56. data/ext/zstd_legacy_v07.c +1 -0
  57. data/gemstub.rb +18 -16
  58. data/lib/extzstd/version.rb +1 -1
  59. data/lib/extzstd.rb +77 -43
  60. data/test/test_basic.rb +11 -6
  61. metadata +23 -10
  62. data/contrib/zstd/common/error_public.h +0 -77
  63. data/contrib/zstd/common/zstd.h +0 -475
  64. data/ext/extzstd_buffered.c +0 -265
  65. data/ext/zstd_amalgam.c +0 -18
@@ -1,89 +1,26 @@
1
- /* ******************************************************************
2
- Error codes and messages
3
- Copyright (C) 2013-2015, Yann Collet
4
-
5
- BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
6
-
7
- Redistribution and use in source and binary forms, with or without
8
- modification, are permitted provided that the following conditions are
9
- met:
10
-
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
-
18
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
-
30
- You can contact the author at :
31
- - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
32
- - Public forum : https://groups.google.com/forum/#!forum/lz4c
33
- ****************************************************************** */
34
- #ifndef ERROR_H_MODULE
35
- #define ERROR_H_MODULE
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
+ */
36
9
 
37
- #if defined (__cplusplus)
38
- extern "C" {
39
- #endif
40
10
 
41
11
  #include <stddef.h> /* size_t, ptrdiff_t */
42
12
  #include "zstd_v03.h"
43
-
44
- /******************************************
45
- * Compiler-specific
46
- ******************************************/
47
- #if defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
48
- # define ERR_STATIC static inline
49
- #elif defined(_MSC_VER)
50
- # define ERR_STATIC static __inline
51
- #elif defined(__GNUC__)
52
- # define ERR_STATIC static __attribute__((unused))
53
- #else
54
- # define ERR_STATIC static /* this version may generate warnings for unused static functions; disable the relevant warning */
55
- #endif
13
+ #include "error_private.h"
56
14
 
57
15
 
58
16
  /******************************************
59
- * Error Management
17
+ * Compiler-specific
60
18
  ******************************************/
61
- #define PREFIX(name) ZSTD_error_##name
62
-
63
- #define ERROR(name) (size_t)-PREFIX(name)
64
-
65
- #define ERROR_LIST(ITEM) \
66
- ITEM(PREFIX(No_Error)) ITEM(PREFIX(GENERIC)) \
67
- ITEM(PREFIX(memory_allocation)) \
68
- ITEM(PREFIX(dstSize_tooSmall)) ITEM(PREFIX(srcSize_wrong)) \
69
- ITEM(PREFIX(prefix_unknown)) ITEM(PREFIX(corruption_detected)) \
70
- ITEM(PREFIX(tableLog_tooLarge)) ITEM(PREFIX(maxSymbolValue_tooLarge)) ITEM(PREFIX(maxSymbolValue_tooSmall)) \
71
- ITEM(PREFIX(maxCode))
72
-
73
- #define ERROR_GENERATE_ENUM(ENUM) ENUM,
74
- typedef enum { ERROR_LIST(ERROR_GENERATE_ENUM) } ERR_codes; /* enum is exposed, to detect & handle specific errors; compare function result to -enum value */
75
-
76
- #define ERROR_CONVERTTOSTRING(STRING) #STRING,
77
- #define ERROR_GENERATE_STRING(EXPR) ERROR_CONVERTTOSTRING(EXPR)
78
-
79
- ERR_STATIC unsigned ERR_isError(size_t code) { return (code > ERROR(maxCode)); }
80
-
81
-
82
- #if defined (__cplusplus)
83
- }
19
+ #if defined(_MSC_VER) /* Visual Studio */
20
+ # include <stdlib.h> /* _byteswap_ulong */
21
+ # include <intrin.h> /* _byteswap_* */
84
22
  #endif
85
23
 
86
- #endif /* ERROR_H_MODULE */
87
24
 
88
25
 
89
26
  /* ******************************************************************
@@ -190,7 +127,7 @@ extern "C" {
190
127
  #ifndef MEM_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */
191
128
  # 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__) )
192
129
  # define MEM_FORCE_MEMORY_ACCESS 2
193
- # elif defined(__INTEL_COMPILER) || \
130
+ # elif (defined(__INTEL_COMPILER) && !defined(WIN32)) || \
194
131
  (defined(__GNUC__) && ( defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) ))
195
132
  # define MEM_FORCE_MEMORY_ACCESS 1
196
133
  # endif
@@ -214,8 +151,6 @@ MEM_STATIC U32 MEM_read32(const void* memPtr) { return *(const U32*) memPtr; }
214
151
  MEM_STATIC U64 MEM_read64(const void* memPtr) { return *(const U64*) memPtr; }
215
152
 
216
153
  MEM_STATIC void MEM_write16(void* memPtr, U16 value) { *(U16*)memPtr = value; }
217
- MEM_STATIC void MEM_write32(void* memPtr, U32 value) { *(U32*)memPtr = value; }
218
- MEM_STATIC void MEM_write64(void* memPtr, U64 value) { *(U64*)memPtr = value; }
219
154
 
220
155
  #elif defined(MEM_FORCE_MEMORY_ACCESS) && (MEM_FORCE_MEMORY_ACCESS==1)
221
156
 
@@ -228,8 +163,6 @@ MEM_STATIC U32 MEM_read32(const void* ptr) { return ((const unalign*)ptr)->u32;
228
163
  MEM_STATIC U64 MEM_read64(const void* ptr) { return ((const unalign*)ptr)->u64; }
229
164
 
230
165
  MEM_STATIC void MEM_write16(void* memPtr, U16 value) { ((unalign*)memPtr)->u16 = value; }
231
- MEM_STATIC void MEM_write32(void* memPtr, U32 value) { ((unalign*)memPtr)->u32 = value; }
232
- MEM_STATIC void MEM_write64(void* memPtr, U64 value) { ((unalign*)memPtr)->u64 = value; }
233
166
 
234
167
  #else
235
168
 
@@ -256,15 +189,6 @@ MEM_STATIC void MEM_write16(void* memPtr, U16 value)
256
189
  memcpy(memPtr, &value, sizeof(value));
257
190
  }
258
191
 
259
- MEM_STATIC void MEM_write32(void* memPtr, U32 value)
260
- {
261
- memcpy(memPtr, &value, sizeof(value));
262
- }
263
-
264
- MEM_STATIC void MEM_write64(void* memPtr, U64 value)
265
- {
266
- memcpy(memPtr, &value, sizeof(value));
267
- }
268
192
 
269
193
  #endif // MEM_FORCE_MEMORY_ACCESS
270
194
 
@@ -305,22 +229,6 @@ MEM_STATIC U32 MEM_readLE32(const void* memPtr)
305
229
  }
306
230
  }
307
231
 
308
- MEM_STATIC void MEM_writeLE32(void* memPtr, U32 val32)
309
- {
310
- if (MEM_isLittleEndian())
311
- {
312
- MEM_write32(memPtr, val32);
313
- }
314
- else
315
- {
316
- BYTE* p = (BYTE*)memPtr;
317
- p[0] = (BYTE)val32;
318
- p[1] = (BYTE)(val32>>8);
319
- p[2] = (BYTE)(val32>>16);
320
- p[3] = (BYTE)(val32>>24);
321
- }
322
- }
323
-
324
232
  MEM_STATIC U64 MEM_readLE64(const void* memPtr)
325
233
  {
326
234
  if (MEM_isLittleEndian())
@@ -333,25 +241,6 @@ MEM_STATIC U64 MEM_readLE64(const void* memPtr)
333
241
  }
334
242
  }
335
243
 
336
- MEM_STATIC void MEM_writeLE64(void* memPtr, U64 val64)
337
- {
338
- if (MEM_isLittleEndian())
339
- {
340
- MEM_write64(memPtr, val64);
341
- }
342
- else
343
- {
344
- BYTE* p = (BYTE*)memPtr;
345
- p[0] = (BYTE)val64;
346
- p[1] = (BYTE)(val64>>8);
347
- p[2] = (BYTE)(val64>>16);
348
- p[3] = (BYTE)(val64>>24);
349
- p[4] = (BYTE)(val64>>32);
350
- p[5] = (BYTE)(val64>>40);
351
- p[6] = (BYTE)(val64>>48);
352
- p[7] = (BYTE)(val64>>56);
353
- }
354
- }
355
244
 
356
245
  MEM_STATIC size_t MEM_readLEST(const void* memPtr)
357
246
  {
@@ -361,13 +250,6 @@ MEM_STATIC size_t MEM_readLEST(const void* memPtr)
361
250
  return (size_t)MEM_readLE64(memPtr);
362
251
  }
363
252
 
364
- MEM_STATIC void MEM_writeLEST(void* memPtr, size_t val)
365
- {
366
- if (MEM_32bits())
367
- MEM_writeLE32(memPtr, (U32)val);
368
- else
369
- MEM_writeLE64(memPtr, (U64)val);
370
- }
371
253
 
372
254
  #if defined (__cplusplus)
373
255
  }
@@ -1197,12 +1079,15 @@ typedef struct ZSTD_DCtx_s ZSTD_DCtx;
1197
1079
  # pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
1198
1080
  # pragma warning(disable : 4214) /* disable: C4214: non-int bitfields */
1199
1081
  #else
1200
- # ifdef __GNUC__
1201
- # define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
1202
- # define FORCE_INLINE static inline __attribute__((always_inline))
1082
+ # if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
1083
+ # ifdef __GNUC__
1084
+ # define FORCE_INLINE static inline __attribute__((always_inline))
1085
+ # else
1086
+ # define FORCE_INLINE static inline
1087
+ # endif
1203
1088
  # else
1204
- # define FORCE_INLINE static inline
1205
- # endif
1089
+ # define FORCE_INLINE static
1090
+ # endif /* __STDC_VERSION__ */
1206
1091
  #endif
1207
1092
 
1208
1093
 
@@ -1663,25 +1548,13 @@ static size_t FSE_decompress(void* dst, size_t maxDstSize, const void* cSrc, siz
1663
1548
  #if defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
1664
1549
  /* inline is defined */
1665
1550
  #elif defined(_MSC_VER)
1551
+ # pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
1666
1552
  # define inline __inline
1667
1553
  #else
1668
1554
  # define inline /* disable inline */
1669
1555
  #endif
1670
1556
 
1671
1557
 
1672
- #ifdef _MSC_VER /* Visual Studio */
1673
- # define FORCE_INLINE static __forceinline
1674
- # pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
1675
- #else
1676
- # ifdef __GNUC__
1677
- # define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
1678
- # define FORCE_INLINE static inline __attribute__((always_inline))
1679
- # else
1680
- # define FORCE_INLINE static inline
1681
- # endif
1682
- #endif
1683
-
1684
-
1685
1558
  /****************************************************************
1686
1559
  * Includes
1687
1560
  ****************************************************************/
@@ -1731,10 +1604,12 @@ static size_t HUF_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
1731
1604
  U32 weightTotal;
1732
1605
  U32 tableLog;
1733
1606
  const BYTE* ip = (const BYTE*) src;
1734
- size_t iSize = ip[0];
1607
+ size_t iSize;
1735
1608
  size_t oSize;
1736
1609
  U32 n;
1737
1610
 
1611
+ if (!srcSize) return ERROR(srcSize_wrong);
1612
+ iSize = ip[0];
1738
1613
  //memset(huffWeight, 0, hwSize); /* is not necessary, even though some analyzer complain ... */
1739
1614
 
1740
1615
  if (iSize >= 128) /* special header */
@@ -1776,6 +1651,7 @@ static size_t HUF_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
1776
1651
  rankStats[huffWeight[n]]++;
1777
1652
  weightTotal += (1 << huffWeight[n]) >> 1;
1778
1653
  }
1654
+ if (weightTotal == 0) return ERROR(corruption_detected);
1779
1655
 
1780
1656
  /* get last non-null symbol weight (implied, total must be 2^n) */
1781
1657
  tableLog = BIT_highbit32(weightTotal) + 1;
@@ -2507,17 +2383,11 @@ static size_t HUF_decompress (void* dst, size_t dstSize, const void* cSrc, size_
2507
2383
  #endif
2508
2384
 
2509
2385
  #ifdef _MSC_VER /* Visual Studio */
2510
- # define FORCE_INLINE static __forceinline
2511
2386
  # include <intrin.h> /* For Visual 2005 */
2512
2387
  # pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
2513
2388
  # pragma warning(disable : 4324) /* disable: C4324: padded structure */
2514
2389
  #else
2515
2390
  # define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
2516
- # ifdef __GNUC__
2517
- # define FORCE_INLINE static inline __attribute__((always_inline))
2518
- # else
2519
- # define FORCE_INLINE static inline
2520
- # endif
2521
2391
  #endif
2522
2392
 
2523
2393
 
@@ -2624,98 +2494,6 @@ typedef struct {
2624
2494
  static unsigned ZSTD_isError(size_t code) { return ERR_isError(code); }
2625
2495
 
2626
2496
 
2627
- /* *************************************
2628
- * Function body to include
2629
- ***************************************/
2630
- static size_t ZSTD_read_ARCH(const void* p) { size_t r; memcpy(&r, p, sizeof(r)); return r; }
2631
-
2632
- MEM_STATIC unsigned ZSTD_NbCommonBytes (register size_t val)
2633
- {
2634
- if (MEM_isLittleEndian())
2635
- {
2636
- if (MEM_64bits())
2637
- {
2638
- # if defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT)
2639
- unsigned long r = 0;
2640
- _BitScanForward64( &r, (U64)val );
2641
- return (int)(r>>3);
2642
- # elif defined(__GNUC__) && (__GNUC__ >= 3) && !defined(LZ4_FORCE_SW_BITCOUNT)
2643
- return (__builtin_ctzll((U64)val) >> 3);
2644
- # else
2645
- static const int DeBruijnBytePos[64] = { 0, 0, 0, 0, 0, 1, 1, 2, 0, 3, 1, 3, 1, 4, 2, 7, 0, 2, 3, 6, 1, 5, 3, 5, 1, 3, 4, 4, 2, 5, 6, 7, 7, 0, 1, 2, 3, 3, 4, 6, 2, 6, 5, 5, 3, 4, 5, 6, 7, 1, 2, 4, 6, 4, 4, 5, 7, 2, 6, 5, 7, 6, 7, 7 };
2646
- return DeBruijnBytePos[((U64)((val & -(long long)val) * 0x0218A392CDABBD3FULL)) >> 58];
2647
- # endif
2648
- }
2649
- else /* 32 bits */
2650
- {
2651
- # if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT)
2652
- unsigned long r;
2653
- _BitScanForward( &r, (U32)val );
2654
- return (int)(r>>3);
2655
- # elif defined(__GNUC__) && (__GNUC__ >= 3) && !defined(LZ4_FORCE_SW_BITCOUNT)
2656
- return (__builtin_ctz((U32)val) >> 3);
2657
- # else
2658
- static const int DeBruijnBytePos[32] = { 0, 0, 3, 0, 3, 1, 3, 0, 3, 2, 2, 1, 3, 2, 0, 1, 3, 3, 1, 2, 2, 2, 2, 0, 3, 1, 2, 0, 1, 0, 1, 1 };
2659
- return DeBruijnBytePos[((U32)((val & -(S32)val) * 0x077CB531U)) >> 27];
2660
- # endif
2661
- }
2662
- }
2663
- else /* Big Endian CPU */
2664
- {
2665
- if (MEM_32bits())
2666
- {
2667
- # if defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT)
2668
- unsigned long r = 0;
2669
- _BitScanReverse64( &r, val );
2670
- return (unsigned)(r>>3);
2671
- # elif defined(__GNUC__) && (__GNUC__ >= 3) && !defined(LZ4_FORCE_SW_BITCOUNT)
2672
- return (__builtin_clzll(val) >> 3);
2673
- # else
2674
- unsigned r;
2675
- const unsigned n32 = sizeof(size_t)*4; /* calculate this way due to compiler complaining in 32-bits mode */
2676
- if (!(val>>n32)) { r=4; } else { r=0; val>>=n32; }
2677
- if (!(val>>16)) { r+=2; val>>=8; } else { val>>=24; }
2678
- r += (!val);
2679
- return r;
2680
- # endif
2681
- }
2682
- else /* 32 bits */
2683
- {
2684
- # if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT)
2685
- unsigned long r = 0;
2686
- _BitScanReverse( &r, (unsigned long)val );
2687
- return (unsigned)(r>>3);
2688
- # elif defined(__GNUC__) && (__GNUC__ >= 3) && !defined(LZ4_FORCE_SW_BITCOUNT)
2689
- return (__builtin_clz((U32)val) >> 3);
2690
- # else
2691
- unsigned r;
2692
- if (!(val>>16)) { r=2; val>>=8; } else { r=0; val>>=24; }
2693
- r += (!val);
2694
- return r;
2695
- # endif
2696
- }
2697
- }
2698
- }
2699
-
2700
-
2701
- MEM_STATIC size_t ZSTD_count(const BYTE* pIn, const BYTE* pMatch, const BYTE* pInLimit)
2702
- {
2703
- const BYTE* const pStart = pIn;
2704
-
2705
- while ((pIn<pInLimit-(sizeof(size_t)-1)))
2706
- {
2707
- size_t diff = ZSTD_read_ARCH(pMatch) ^ ZSTD_read_ARCH(pIn);
2708
- if (!diff) { pIn+=sizeof(size_t); pMatch+=sizeof(size_t); continue; }
2709
- pIn += ZSTD_NbCommonBytes(diff);
2710
- return (size_t)(pIn - pStart);
2711
- }
2712
-
2713
- if (MEM_32bits()) if ((pIn<(pInLimit-3)) && (MEM_read32(pMatch) == MEM_read32(pIn))) { pIn+=4; pMatch+=4; }
2714
- if ((pIn<(pInLimit-1)) && (MEM_read16(pMatch) == MEM_read16(pIn))) { pIn+=2; pMatch+=2; }
2715
- if ((pIn<pInLimit) && (*pMatch == *pIn)) pIn++;
2716
- return (size_t)(pIn - pStart);
2717
- }
2718
-
2719
2497
 
2720
2498
  /* *************************************************************
2721
2499
  * Decompression section
@@ -2885,7 +2663,6 @@ static size_t ZSTD_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t* d
2885
2663
  /* Build DTables */
2886
2664
  switch(LLtype)
2887
2665
  {
2888
- U32 max;
2889
2666
  case bt_rle :
2890
2667
  LLlog = 0;
2891
2668
  FSE_buildDTable_rle(DTableLL, *ip++); break;
@@ -2893,17 +2670,16 @@ static size_t ZSTD_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t* d
2893
2670
  LLlog = LLbits;
2894
2671
  FSE_buildDTable_raw(DTableLL, LLbits); break;
2895
2672
  default :
2896
- max = MaxLL;
2897
- headerSize = FSE_readNCount(norm, &max, &LLlog, ip, iend-ip);
2898
- if (FSE_isError(headerSize)) return ERROR(GENERIC);
2899
- if (LLlog > LLFSELog) return ERROR(corruption_detected);
2900
- ip += headerSize;
2901
- FSE_buildDTable(DTableLL, norm, max, LLlog);
2902
- }
2673
+ { U32 max = MaxLL;
2674
+ headerSize = FSE_readNCount(norm, &max, &LLlog, ip, iend-ip);
2675
+ if (FSE_isError(headerSize)) return ERROR(GENERIC);
2676
+ if (LLlog > LLFSELog) return ERROR(corruption_detected);
2677
+ ip += headerSize;
2678
+ FSE_buildDTable(DTableLL, norm, max, LLlog);
2679
+ } }
2903
2680
 
2904
2681
  switch(Offtype)
2905
2682
  {
2906
- U32 max;
2907
2683
  case bt_rle :
2908
2684
  Offlog = 0;
2909
2685
  if (ip > iend-2) return ERROR(srcSize_wrong); /* min : "raw", hence no header, but at least xxLog bits */
@@ -2913,17 +2689,16 @@ static size_t ZSTD_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t* d
2913
2689
  Offlog = Offbits;
2914
2690
  FSE_buildDTable_raw(DTableOffb, Offbits); break;
2915
2691
  default :
2916
- max = MaxOff;
2917
- headerSize = FSE_readNCount(norm, &max, &Offlog, ip, iend-ip);
2918
- if (FSE_isError(headerSize)) return ERROR(GENERIC);
2919
- if (Offlog > OffFSELog) return ERROR(corruption_detected);
2920
- ip += headerSize;
2921
- FSE_buildDTable(DTableOffb, norm, max, Offlog);
2922
- }
2692
+ { U32 max = MaxOff;
2693
+ headerSize = FSE_readNCount(norm, &max, &Offlog, ip, iend-ip);
2694
+ if (FSE_isError(headerSize)) return ERROR(GENERIC);
2695
+ if (Offlog > OffFSELog) return ERROR(corruption_detected);
2696
+ ip += headerSize;
2697
+ FSE_buildDTable(DTableOffb, norm, max, Offlog);
2698
+ } }
2923
2699
 
2924
2700
  switch(MLtype)
2925
2701
  {
2926
- U32 max;
2927
2702
  case bt_rle :
2928
2703
  MLlog = 0;
2929
2704
  if (ip > iend-2) return ERROR(srcSize_wrong); /* min : "raw", hence no header, but at least xxLog bits */
@@ -2932,14 +2707,13 @@ static size_t ZSTD_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t* d
2932
2707
  MLlog = MLbits;
2933
2708
  FSE_buildDTable_raw(DTableML, MLbits); break;
2934
2709
  default :
2935
- max = MaxML;
2936
- headerSize = FSE_readNCount(norm, &max, &MLlog, ip, iend-ip);
2937
- if (FSE_isError(headerSize)) return ERROR(GENERIC);
2938
- if (MLlog > MLFSELog) return ERROR(corruption_detected);
2939
- ip += headerSize;
2940
- FSE_buildDTable(DTableML, norm, max, MLlog);
2941
- }
2942
- }
2710
+ { U32 max = MaxML;
2711
+ headerSize = FSE_readNCount(norm, &max, &MLlog, ip, iend-ip);
2712
+ if (FSE_isError(headerSize)) return ERROR(GENERIC);
2713
+ if (MLlog > MLFSELog) return ERROR(corruption_detected);
2714
+ ip += headerSize;
2715
+ FSE_buildDTable(DTableML, norm, max, MLlog);
2716
+ } } }
2943
2717
 
2944
2718
  return ip-istart;
2945
2719
  }
@@ -1,36 +1,14 @@
1
- /*
2
- zstd_v03 - decoder for 0.3 format
3
- Header File
4
- Copyright (C) 2015, Yann Collet.
5
-
6
- BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
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
- Redistribution and use in source and binary forms, with or without
9
- modification, are permitted provided that the following conditions are
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_V03_H_298734209782
11
+ #define ZSTD_V03_H_298734209782
34
12
 
35
13
  #if defined (__cplusplus)
36
14
  extern "C" {
@@ -97,3 +75,5 @@ size_t ZSTDv03_decompressContinue(ZSTDv03_Dctx* dctx, void* dst, size_t maxDstSi
97
75
  #if defined (__cplusplus)
98
76
  }
99
77
  #endif
78
+
79
+ #endif /* ZSTD_V03_H_298734209782 */