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.
Files changed (69) 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/2.1/extzstd.so +0 -0
  59. data/lib/2.2/extzstd.so +0 -0
  60. data/lib/2.3/extzstd.so +0 -0
  61. data/lib/extzstd/version.rb +1 -1
  62. data/lib/extzstd.rb +77 -43
  63. data/test/test_basic.rb +11 -6
  64. metadata +23 -11
  65. data/contrib/zstd/common/error_public.h +0 -77
  66. data/contrib/zstd/common/zstd.h +0 -475
  67. data/ext/extzstd_buffered.c +0 -265
  68. data/ext/zstd_amalgam.c +0 -18
  69. data/lib/2.0/extzstd.so +0 -0
@@ -1,39 +1,16 @@
1
- /* ******************************************************************
2
- zstd_v04.c
3
- Decompression module for ZSTD v0.4 legacy format
4
- Copyright (C) 2016, Yann Collet.
5
-
6
- BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
7
-
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
-
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.
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
+ */
30
9
 
31
- You can contact the author at :
32
- - Homepage : http://www.zstd.net/
33
- ****************************************************************** */
34
10
 
35
11
  /*- Dependencies -*/
36
12
  #include "zstd_v04.h"
13
+ #include "error_private.h"
37
14
 
38
15
 
39
16
  /* ******************************************************************
@@ -87,6 +64,10 @@ extern "C" {
87
64
  /******************************************
88
65
  * Compiler-specific
89
66
  ******************************************/
67
+ #if defined(_MSC_VER) /* Visual Studio */
68
+ # include <stdlib.h> /* _byteswap_ulong */
69
+ # include <intrin.h> /* _byteswap_* */
70
+ #endif
90
71
  #if defined(__GNUC__)
91
72
  # define MEM_STATIC static __attribute__((unused))
92
73
  #elif defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
@@ -140,7 +121,7 @@ extern "C" {
140
121
  #ifndef MEM_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */
141
122
  # 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__) )
142
123
  # define MEM_FORCE_MEMORY_ACCESS 2
143
- # elif defined(__INTEL_COMPILER) || \
124
+ # elif (defined(__INTEL_COMPILER) && !defined(WIN32)) || \
144
125
  (defined(__GNUC__) && ( defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) ))
145
126
  # define MEM_FORCE_MEMORY_ACCESS 1
146
127
  # endif
@@ -164,8 +145,6 @@ MEM_STATIC U32 MEM_read32(const void* memPtr) { return *(const U32*) memPtr; }
164
145
  MEM_STATIC U64 MEM_read64(const void* memPtr) { return *(const U64*) memPtr; }
165
146
 
166
147
  MEM_STATIC void MEM_write16(void* memPtr, U16 value) { *(U16*)memPtr = value; }
167
- MEM_STATIC void MEM_write32(void* memPtr, U32 value) { *(U32*)memPtr = value; }
168
- MEM_STATIC void MEM_write64(void* memPtr, U64 value) { *(U64*)memPtr = value; }
169
148
 
170
149
  #elif defined(MEM_FORCE_MEMORY_ACCESS) && (MEM_FORCE_MEMORY_ACCESS==1)
171
150
 
@@ -178,8 +157,6 @@ MEM_STATIC U32 MEM_read32(const void* ptr) { return ((const unalign*)ptr)->u32;
178
157
  MEM_STATIC U64 MEM_read64(const void* ptr) { return ((const unalign*)ptr)->u64; }
179
158
 
180
159
  MEM_STATIC void MEM_write16(void* memPtr, U16 value) { ((unalign*)memPtr)->u16 = value; }
181
- MEM_STATIC void MEM_write32(void* memPtr, U32 value) { ((unalign*)memPtr)->u32 = value; }
182
- MEM_STATIC void MEM_write64(void* memPtr, U64 value) { ((unalign*)memPtr)->u64 = value; }
183
160
 
184
161
  #else
185
162
 
@@ -206,16 +183,6 @@ MEM_STATIC void MEM_write16(void* memPtr, U16 value)
206
183
  memcpy(memPtr, &value, sizeof(value));
207
184
  }
208
185
 
209
- MEM_STATIC void MEM_write32(void* memPtr, U32 value)
210
- {
211
- memcpy(memPtr, &value, sizeof(value));
212
- }
213
-
214
- MEM_STATIC void MEM_write64(void* memPtr, U64 value)
215
- {
216
- memcpy(memPtr, &value, sizeof(value));
217
- }
218
-
219
186
  #endif // MEM_FORCE_MEMORY_ACCESS
220
187
 
221
188
 
@@ -255,21 +222,6 @@ MEM_STATIC U32 MEM_readLE32(const void* memPtr)
255
222
  }
256
223
  }
257
224
 
258
- MEM_STATIC void MEM_writeLE32(void* memPtr, U32 val32)
259
- {
260
- if (MEM_isLittleEndian())
261
- {
262
- MEM_write32(memPtr, val32);
263
- }
264
- else
265
- {
266
- BYTE* p = (BYTE*)memPtr;
267
- p[0] = (BYTE)val32;
268
- p[1] = (BYTE)(val32>>8);
269
- p[2] = (BYTE)(val32>>16);
270
- p[3] = (BYTE)(val32>>24);
271
- }
272
- }
273
225
 
274
226
  MEM_STATIC U64 MEM_readLE64(const void* memPtr)
275
227
  {
@@ -283,25 +235,6 @@ MEM_STATIC U64 MEM_readLE64(const void* memPtr)
283
235
  }
284
236
  }
285
237
 
286
- MEM_STATIC void MEM_writeLE64(void* memPtr, U64 val64)
287
- {
288
- if (MEM_isLittleEndian())
289
- {
290
- MEM_write64(memPtr, val64);
291
- }
292
- else
293
- {
294
- BYTE* p = (BYTE*)memPtr;
295
- p[0] = (BYTE)val64;
296
- p[1] = (BYTE)(val64>>8);
297
- p[2] = (BYTE)(val64>>16);
298
- p[3] = (BYTE)(val64>>24);
299
- p[4] = (BYTE)(val64>>32);
300
- p[5] = (BYTE)(val64>>40);
301
- p[6] = (BYTE)(val64>>48);
302
- p[7] = (BYTE)(val64>>56);
303
- }
304
- }
305
238
 
306
239
  MEM_STATIC size_t MEM_readLEST(const void* memPtr)
307
240
  {
@@ -311,13 +244,6 @@ MEM_STATIC size_t MEM_readLEST(const void* memPtr)
311
244
  return (size_t)MEM_readLE64(memPtr);
312
245
  }
313
246
 
314
- MEM_STATIC void MEM_writeLEST(void* memPtr, size_t val)
315
- {
316
- if (MEM_32bits())
317
- MEM_writeLE32(memPtr, (U32)val);
318
- else
319
- MEM_writeLE64(memPtr, (U64)val);
320
- }
321
247
 
322
248
  #if defined (__cplusplus)
323
249
  }
@@ -325,79 +251,6 @@ MEM_STATIC void MEM_writeLEST(void* memPtr, size_t val)
325
251
 
326
252
  #endif /* MEM_H_MODULE */
327
253
 
328
- /* ******************************************************************
329
- Error codes list
330
- Copyright (C) 2016, Yann Collet
331
-
332
- BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
333
-
334
- Redistribution and use in source and binary forms, with or without
335
- modification, are permitted provided that the following conditions are
336
- met:
337
-
338
- * Redistributions of source code must retain the above copyright
339
- notice, this list of conditions and the following disclaimer.
340
- * Redistributions in binary form must reproduce the above
341
- copyright notice, this list of conditions and the following disclaimer
342
- in the documentation and/or other materials provided with the
343
- distribution.
344
-
345
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
346
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
347
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
348
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
349
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
350
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
351
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
352
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
353
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
354
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
355
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
356
-
357
- You can contact the author at :
358
- - Source repository : https://github.com/Cyan4973/zstd
359
- ****************************************************************** */
360
- #ifndef ERROR_PUBLIC_H_MODULE
361
- #define ERROR_PUBLIC_H_MODULE
362
-
363
- #if defined (__cplusplus)
364
- extern "C" {
365
- #endif
366
-
367
-
368
- /* ****************************************
369
- * error list
370
- ******************************************/
371
- enum {
372
- ZSTD_error_No_Error,
373
- ZSTD_error_GENERIC,
374
- ZSTD_error_prefix_unknown,
375
- ZSTD_error_frameParameter_unsupported,
376
- ZSTD_error_frameParameter_unsupportedBy32bitsImplementation,
377
- ZSTD_error_init_missing,
378
- ZSTD_error_memory_allocation,
379
- ZSTD_error_stage_wrong,
380
- ZSTD_error_dstSize_tooSmall,
381
- ZSTD_error_srcSize_wrong,
382
- ZSTD_error_corruption_detected,
383
- ZSTD_error_tableLog_tooLarge,
384
- ZSTD_error_maxSymbolValue_tooLarge,
385
- ZSTD_error_maxSymbolValue_tooSmall,
386
- ZSTD_error_maxCode
387
- };
388
-
389
- /* note : functions provide error codes in reverse negative order,
390
- so compare with (size_t)(0-enum) */
391
-
392
-
393
- #if defined (__cplusplus)
394
- }
395
- #endif
396
-
397
- #endif /* ERROR_PUBLIC_H_MODULE */
398
-
399
-
400
-
401
254
  /*
402
255
  zstd - standard compression library
403
256
  Header File for static linking only
@@ -531,115 +384,6 @@ static size_t ZSTD_decompressContinue(ZSTD_DCtx* dctx, void* dst, size_t maxDstS
531
384
  }
532
385
  #endif
533
386
 
534
- /* ******************************************************************
535
- Error codes and messages
536
- Copyright (C) 2013-2016, Yann Collet
537
-
538
- BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
539
-
540
- Redistribution and use in source and binary forms, with or without
541
- modification, are permitted provided that the following conditions are
542
- met:
543
-
544
- * Redistributions of source code must retain the above copyright
545
- notice, this list of conditions and the following disclaimer.
546
- * Redistributions in binary form must reproduce the above
547
- copyright notice, this list of conditions and the following disclaimer
548
- in the documentation and/or other materials provided with the
549
- distribution.
550
-
551
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
552
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
553
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
554
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
555
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
556
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
557
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
558
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
559
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
560
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
561
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
562
-
563
- You can contact the author at :
564
- - Source repository : https://github.com/Cyan4973/zstd
565
- ****************************************************************** */
566
- /* Note : this module is expected to remain private, do not expose it */
567
-
568
- #ifndef ERROR_H_MODULE
569
- #define ERROR_H_MODULE
570
-
571
- #if defined (__cplusplus)
572
- extern "C" {
573
- #endif
574
-
575
-
576
- /* *****************************************
577
- * Includes
578
- ******************************************/
579
- #include <stddef.h> /* size_t, ptrdiff_t */
580
-
581
-
582
- /* *****************************************
583
- * Compiler-specific
584
- ******************************************/
585
- #if defined(__GNUC__)
586
- # define ERR_STATIC static __attribute__((unused))
587
- #elif defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
588
- # define ERR_STATIC static inline
589
- #elif defined(_MSC_VER)
590
- # define ERR_STATIC static __inline
591
- #else
592
- # define ERR_STATIC static /* this version may generate warnings for unused static functions; disable the relevant warning */
593
- #endif
594
-
595
-
596
- /* *****************************************
597
- * Error Codes
598
- ******************************************/
599
- #define PREFIX(name) ZSTD_error_##name
600
-
601
- #ifdef ERROR
602
- # undef ERROR /* reported already defined on VS 2015 by Rich Geldreich */
603
- #endif
604
- #define ERROR(name) (size_t)-PREFIX(name)
605
-
606
- ERR_STATIC unsigned ERR_isError(size_t code) { return (code > ERROR(maxCode)); }
607
-
608
-
609
- /* *****************************************
610
- * Error Strings
611
- ******************************************/
612
-
613
- ERR_STATIC const char* ERR_getErrorName(size_t code)
614
- {
615
- static const char* codeError = "Unspecified error code";
616
- switch( (size_t)(0-code) )
617
- {
618
- case ZSTD_error_No_Error: return "No error detected";
619
- case ZSTD_error_GENERIC: return "Error (generic)";
620
- case ZSTD_error_prefix_unknown: return "Unknown frame descriptor";
621
- case ZSTD_error_frameParameter_unsupported: return "Unsupported frame parameter";
622
- case ZSTD_error_frameParameter_unsupportedBy32bitsImplementation: return "Frame parameter unsupported in 32-bits mode";
623
- case ZSTD_error_init_missing: return "Context should be init first";
624
- case ZSTD_error_memory_allocation: return "Allocation error : not enough memory";
625
- case ZSTD_error_dstSize_tooSmall: return "Destination buffer is too small";
626
- case ZSTD_error_srcSize_wrong: return "Src size incorrect";
627
- case ZSTD_error_corruption_detected: return "Corrupted block detected";
628
- case ZSTD_error_tableLog_tooLarge: return "tableLog requires too much memory";
629
- case ZSTD_error_maxSymbolValue_tooLarge: return "Unsupported max possible Symbol Value : too large";
630
- case ZSTD_error_maxSymbolValue_tooSmall: return "Specified maxSymbolValue is too small";
631
- case ZSTD_error_maxCode:
632
- default: return codeError;
633
- }
634
- }
635
-
636
-
637
- #if defined (__cplusplus)
638
- }
639
- #endif
640
-
641
- #endif /* ERROR_H_MODULE */
642
-
643
387
 
644
388
  #endif /* ZSTD_STATIC_H */
645
389
 
@@ -1455,12 +1199,15 @@ MEM_STATIC unsigned FSE_endOfDState(const FSE_DState_t* DStatePtr)
1455
1199
  # pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
1456
1200
  # pragma warning(disable : 4214) /* disable: C4214: non-int bitfields */
1457
1201
  #else
1458
- # ifdef __GNUC__
1459
- # define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
1460
- # define FORCE_INLINE static inline __attribute__((always_inline))
1202
+ # if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
1203
+ # ifdef __GNUC__
1204
+ # define FORCE_INLINE static inline __attribute__((always_inline))
1205
+ # else
1206
+ # define FORCE_INLINE static inline
1207
+ # endif
1461
1208
  # else
1462
- # define FORCE_INLINE static inline
1463
- # endif
1209
+ # define FORCE_INLINE static
1210
+ # endif /* __STDC_VERSION__ */
1464
1211
  #endif
1465
1212
 
1466
1213
 
@@ -2096,15 +1843,7 @@ static size_t HUF_decompress4X4_usingDTable(void* dst, size_t maxDstSize, const
2096
1843
 
2097
1844
 
2098
1845
  #ifdef _MSC_VER /* Visual Studio */
2099
- # define FORCE_INLINE static __forceinline
2100
1846
  # pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
2101
- #else
2102
- # ifdef __GNUC__
2103
- # define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
2104
- # define FORCE_INLINE static inline __attribute__((always_inline))
2105
- # else
2106
- # define FORCE_INLINE static inline
2107
- # endif
2108
1847
  #endif
2109
1848
 
2110
1849
 
@@ -2157,10 +1896,12 @@ static size_t HUF_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
2157
1896
  U32 weightTotal;
2158
1897
  U32 tableLog;
2159
1898
  const BYTE* ip = (const BYTE*) src;
2160
- size_t iSize = ip[0];
1899
+ size_t iSize;
2161
1900
  size_t oSize;
2162
1901
  U32 n;
2163
1902
 
1903
+ if (!srcSize) return ERROR(srcSize_wrong);
1904
+ iSize = ip[0];
2164
1905
  //memset(huffWeight, 0, hwSize); /* is not necessary, even though some analyzer complain ... */
2165
1906
 
2166
1907
  if (iSize >= 128) /* special header */
@@ -2202,6 +1943,7 @@ static size_t HUF_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
2202
1943
  rankStats[huffWeight[n]]++;
2203
1944
  weightTotal += (1 << huffWeight[n]) >> 1;
2204
1945
  }
1946
+ if (weightTotal == 0) return ERROR(corruption_detected);
2205
1947
 
2206
1948
  /* get last non-null symbol weight (implied, total must be 2^n) */
2207
1949
  tableLog = BIT_highbit32(weightTotal) + 1;
@@ -2912,17 +2654,9 @@ static size_t HUF_decompress (void* dst, size_t dstSize, const void* cSrc, size_
2912
2654
  * Compiler specifics
2913
2655
  *********************************************************/
2914
2656
  #ifdef _MSC_VER /* Visual Studio */
2915
- # define FORCE_INLINE static __forceinline
2916
2657
  # include <intrin.h> /* For Visual 2005 */
2917
2658
  # pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
2918
2659
  # pragma warning(disable : 4324) /* disable: C4324: padded structure */
2919
- #else
2920
- # define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
2921
- # ifdef __GNUC__
2922
- # define FORCE_INLINE static inline __attribute__((always_inline))
2923
- # else
2924
- # define FORCE_INLINE static inline
2925
- # endif
2926
2660
  #endif
2927
2661
 
2928
2662
 
@@ -3043,7 +2777,7 @@ static size_t ZSTD_decodeFrameHeader_Part2(ZSTD_DCtx* zc, const void* src, size_
3043
2777
  size_t result;
3044
2778
  if (srcSize != zc->headerSize) return ERROR(srcSize_wrong);
3045
2779
  result = ZSTD_getFrameParams(&(zc->params), src, srcSize);
3046
- if ((MEM_32bits()) && (zc->params.windowLog > 25)) return ERROR(frameParameter_unsupportedBy32bitsImplementation);
2780
+ if ((MEM_32bits()) && (zc->params.windowLog > 25)) return ERROR(frameParameter_unsupportedBy32bits);
3047
2781
  return result;
3048
2782
  }
3049
2783
 
@@ -3196,7 +2930,6 @@ static size_t ZSTD_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t* d
3196
2930
  /* Build DTables */
3197
2931
  switch(LLtype)
3198
2932
  {
3199
- U32 max;
3200
2933
  case bt_rle :
3201
2934
  LLlog = 0;
3202
2935
  FSE_buildDTable_rle(DTableLL, *ip++); break;
@@ -3204,17 +2937,16 @@ static size_t ZSTD_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t* d
3204
2937
  LLlog = LLbits;
3205
2938
  FSE_buildDTable_raw(DTableLL, LLbits); break;
3206
2939
  default :
3207
- max = MaxLL;
3208
- headerSize = FSE_readNCount(norm, &max, &LLlog, ip, iend-ip);
3209
- if (FSE_isError(headerSize)) return ERROR(GENERIC);
3210
- if (LLlog > LLFSELog) return ERROR(corruption_detected);
3211
- ip += headerSize;
3212
- FSE_buildDTable(DTableLL, norm, max, LLlog);
3213
- }
2940
+ { U32 max = MaxLL;
2941
+ headerSize = FSE_readNCount(norm, &max, &LLlog, ip, iend-ip);
2942
+ if (FSE_isError(headerSize)) return ERROR(GENERIC);
2943
+ if (LLlog > LLFSELog) return ERROR(corruption_detected);
2944
+ ip += headerSize;
2945
+ FSE_buildDTable(DTableLL, norm, max, LLlog);
2946
+ } }
3214
2947
 
3215
2948
  switch(Offtype)
3216
2949
  {
3217
- U32 max;
3218
2950
  case bt_rle :
3219
2951
  Offlog = 0;
3220
2952
  if (ip > iend-2) return ERROR(srcSize_wrong); /* min : "raw", hence no header, but at least xxLog bits */
@@ -3224,17 +2956,16 @@ static size_t ZSTD_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t* d
3224
2956
  Offlog = Offbits;
3225
2957
  FSE_buildDTable_raw(DTableOffb, Offbits); break;
3226
2958
  default :
3227
- max = MaxOff;
3228
- headerSize = FSE_readNCount(norm, &max, &Offlog, ip, iend-ip);
3229
- if (FSE_isError(headerSize)) return ERROR(GENERIC);
3230
- if (Offlog > OffFSELog) return ERROR(corruption_detected);
3231
- ip += headerSize;
3232
- FSE_buildDTable(DTableOffb, norm, max, Offlog);
3233
- }
2959
+ { U32 max = MaxOff;
2960
+ headerSize = FSE_readNCount(norm, &max, &Offlog, ip, iend-ip);
2961
+ if (FSE_isError(headerSize)) return ERROR(GENERIC);
2962
+ if (Offlog > OffFSELog) return ERROR(corruption_detected);
2963
+ ip += headerSize;
2964
+ FSE_buildDTable(DTableOffb, norm, max, Offlog);
2965
+ } }
3234
2966
 
3235
2967
  switch(MLtype)
3236
2968
  {
3237
- U32 max;
3238
2969
  case bt_rle :
3239
2970
  MLlog = 0;
3240
2971
  if (ip > iend-2) return ERROR(srcSize_wrong); /* min : "raw", hence no header, but at least xxLog bits */
@@ -3243,14 +2974,13 @@ static size_t ZSTD_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t* d
3243
2974
  MLlog = MLbits;
3244
2975
  FSE_buildDTable_raw(DTableML, MLbits); break;
3245
2976
  default :
3246
- max = MaxML;
3247
- headerSize = FSE_readNCount(norm, &max, &MLlog, ip, iend-ip);
3248
- if (FSE_isError(headerSize)) return ERROR(GENERIC);
3249
- if (MLlog > MLFSELog) return ERROR(corruption_detected);
3250
- ip += headerSize;
3251
- FSE_buildDTable(DTableML, norm, max, MLlog);
3252
- }
3253
- }
2977
+ { U32 max = MaxML;
2978
+ headerSize = FSE_readNCount(norm, &max, &MLlog, ip, iend-ip);
2979
+ if (FSE_isError(headerSize)) return ERROR(GENERIC);
2980
+ if (MLlog > MLFSELog) return ERROR(corruption_detected);
2981
+ ip += headerSize;
2982
+ FSE_buildDTable(DTableML, norm, max, MLlog);
2983
+ } } }
3254
2984
 
3255
2985
  return ip-istart;
3256
2986
  }
@@ -3380,8 +3110,13 @@ static size_t ZSTD_execSequence(BYTE* op,
3380
3110
  op = oLitEnd + length1;
3381
3111
  sequence.matchLength -= length1;
3382
3112
  match = base;
3113
+ if (op > oend_8) {
3114
+ while (op < oMatchEnd) *op++ = *match++;
3115
+ return sequenceLength;
3116
+ }
3383
3117
  }
3384
3118
  }
3119
+ /* Requirement: op <= oend_8 */
3385
3120
 
3386
3121
  /* match within prefix */
3387
3122
  if (sequence.offset < 8)
@@ -3752,7 +3487,7 @@ static void ZSTD_decompress_insertDictionary(ZSTD_DCtx* ctx, const void* dict, s
3752
3487
  * The function will report how many bytes were read or written by modifying *srcSizePtr and *maxDstSizePtr.
3753
3488
  * Note that it may not consume the entire input, in which case it's up to the caller to call again the function with remaining input.
3754
3489
  * The content of dst will be overwritten (up to *maxDstSizePtr) at each function call, so save its content if it matters or change dst .
3755
- * @return : a hint to preferred nb of bytes to use as input for next function call (it's only a hint, to improve latency)
3490
+ * return : a hint to preferred nb of bytes to use as input for next function call (it's only a hint, to improve latency)
3756
3491
  * or 0 when a frame is completely decoded
3757
3492
  * or an error code, which can be tested using ZBUFF_isError().
3758
3493
  *
@@ -4024,7 +3759,7 @@ size_t ZSTDv04_decompress(void* dst, size_t maxDstSize, const void* src, size_t
4024
3759
  return regenSize;
4025
3760
  #else
4026
3761
  ZSTD_DCtx dctx;
4027
- return ZSTD_decompressDCtx(&dctx, dst, maxDstSize, src, srcSize);
3762
+ return ZSTDv04_decompressDCtx(&dctx, dst, maxDstSize, src, srcSize);
4028
3763
  #endif
4029
3764
  }
4030
3765
 
@@ -4054,3 +3789,11 @@ size_t ZBUFFv04_decompressContinue(ZBUFFv04_DCtx* dctx, void* dst, size_t* maxDs
4054
3789
  {
4055
3790
  return ZBUFF_decompressContinue(dctx, dst, maxDstSizePtr, src, srcSizePtr);
4056
3791
  }
3792
+
3793
+ ZSTD_DCtx* ZSTDv04_createDCtx(void) { return ZSTD_createDCtx(); }
3794
+ size_t ZSTDv04_freeDCtx(ZSTD_DCtx* dctx) { return ZSTD_freeDCtx(dctx); }
3795
+
3796
+ size_t ZSTDv04_getFrameParams(ZSTD_parameters* params, const void* src, size_t srcSize)
3797
+ {
3798
+ return ZSTD_getFrameParams(params, src, srcSize);
3799
+ }
@@ -1,36 +1,14 @@
1
- /*
2
- zstd_v04 - decoder for 0.4 format
3
- Header File
4
- Copyright (C) 2016, Yann Collet.
5
-
6
- BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
7
-
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
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
+
10
+ #ifndef ZSTD_V04_H_91868324769238
11
+ #define ZSTD_V04_H_91868324769238
34
12
 
35
13
  #if defined (__cplusplus)
36
14
  extern "C" {
@@ -146,3 +124,5 @@ size_t ZBUFFv04_recommendedDOutSize(void);
146
124
  #if defined (__cplusplus)
147
125
  }
148
126
  #endif
127
+
128
+ #endif /* ZSTD_V04_H_91868324769238 */