zstd-ruby 1.4.4.0 → 1.5.1.0
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/.github/dependabot.yml +8 -0
- data/.github/workflows/ruby.yml +35 -0
- data/README.md +2 -2
- data/ext/zstdruby/extconf.rb +1 -0
- data/ext/zstdruby/libzstd/BUCK +5 -7
- data/ext/zstdruby/libzstd/Makefile +241 -173
- data/ext/zstdruby/libzstd/README.md +76 -18
- data/ext/zstdruby/libzstd/common/bitstream.h +75 -57
- data/ext/zstdruby/libzstd/common/compiler.h +196 -20
- data/ext/zstdruby/libzstd/common/cpu.h +1 -3
- data/ext/zstdruby/libzstd/common/debug.c +11 -31
- data/ext/zstdruby/libzstd/common/debug.h +22 -49
- data/ext/zstdruby/libzstd/common/entropy_common.c +208 -76
- data/ext/zstdruby/libzstd/common/error_private.c +3 -1
- data/ext/zstdruby/libzstd/common/error_private.h +87 -4
- data/ext/zstdruby/libzstd/common/fse.h +51 -42
- data/ext/zstdruby/libzstd/common/fse_decompress.c +149 -57
- data/ext/zstdruby/libzstd/common/huf.h +60 -54
- data/ext/zstdruby/libzstd/common/mem.h +87 -98
- data/ext/zstdruby/libzstd/common/pool.c +23 -17
- data/ext/zstdruby/libzstd/common/pool.h +3 -3
- data/ext/zstdruby/libzstd/common/portability_macros.h +131 -0
- data/ext/zstdruby/libzstd/common/threading.c +10 -8
- data/ext/zstdruby/libzstd/common/threading.h +4 -3
- data/ext/zstdruby/libzstd/common/xxhash.c +15 -873
- data/ext/zstdruby/libzstd/common/xxhash.h +5572 -191
- data/ext/zstdruby/libzstd/common/zstd_common.c +10 -10
- data/ext/zstdruby/libzstd/common/zstd_deps.h +111 -0
- data/ext/zstdruby/libzstd/common/zstd_internal.h +252 -108
- data/ext/zstdruby/libzstd/common/zstd_trace.h +163 -0
- data/ext/zstdruby/libzstd/compress/clevels.h +134 -0
- data/ext/zstdruby/libzstd/compress/fse_compress.c +105 -85
- data/ext/zstdruby/libzstd/compress/hist.c +41 -63
- data/ext/zstdruby/libzstd/compress/hist.h +13 -33
- data/ext/zstdruby/libzstd/compress/huf_compress.c +831 -259
- data/ext/zstdruby/libzstd/compress/zstd_compress.c +3213 -1007
- data/ext/zstdruby/libzstd/compress/zstd_compress_internal.h +493 -71
- data/ext/zstdruby/libzstd/compress/zstd_compress_literals.c +21 -16
- data/ext/zstdruby/libzstd/compress/zstd_compress_literals.h +4 -2
- data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.c +51 -24
- data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.h +10 -3
- data/ext/zstdruby/libzstd/compress/zstd_compress_superblock.c +573 -0
- data/ext/zstdruby/libzstd/compress/zstd_compress_superblock.h +32 -0
- data/ext/zstdruby/libzstd/compress/zstd_cwksp.h +208 -81
- data/ext/zstdruby/libzstd/compress/zstd_double_fast.c +315 -137
- data/ext/zstdruby/libzstd/compress/zstd_double_fast.h +2 -2
- data/ext/zstdruby/libzstd/compress/zstd_fast.c +319 -128
- data/ext/zstdruby/libzstd/compress/zstd_fast.h +2 -2
- data/ext/zstdruby/libzstd/compress/zstd_lazy.c +1156 -171
- data/ext/zstdruby/libzstd/compress/zstd_lazy.h +59 -1
- data/ext/zstdruby/libzstd/compress/zstd_ldm.c +331 -206
- data/ext/zstdruby/libzstd/compress/zstd_ldm.h +15 -3
- data/ext/zstdruby/libzstd/compress/zstd_ldm_geartab.h +106 -0
- data/ext/zstdruby/libzstd/compress/zstd_opt.c +403 -226
- data/ext/zstdruby/libzstd/compress/zstd_opt.h +1 -1
- data/ext/zstdruby/libzstd/compress/zstdmt_compress.c +188 -453
- data/ext/zstdruby/libzstd/compress/zstdmt_compress.h +32 -114
- data/ext/zstdruby/libzstd/decompress/huf_decompress.c +1065 -410
- data/ext/zstdruby/libzstd/decompress/huf_decompress_amd64.S +571 -0
- data/ext/zstdruby/libzstd/decompress/zstd_ddict.c +20 -16
- data/ext/zstdruby/libzstd/decompress/zstd_ddict.h +3 -3
- data/ext/zstdruby/libzstd/decompress/zstd_decompress.c +691 -230
- data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.c +1072 -323
- data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.h +16 -7
- data/ext/zstdruby/libzstd/decompress/zstd_decompress_internal.h +71 -10
- data/ext/zstdruby/libzstd/deprecated/zbuff.h +3 -3
- data/ext/zstdruby/libzstd/deprecated/zbuff_common.c +2 -2
- data/ext/zstdruby/libzstd/deprecated/zbuff_compress.c +24 -4
- data/ext/zstdruby/libzstd/deprecated/zbuff_decompress.c +1 -1
- data/ext/zstdruby/libzstd/dictBuilder/cover.c +57 -40
- data/ext/zstdruby/libzstd/dictBuilder/cover.h +20 -9
- data/ext/zstdruby/libzstd/dictBuilder/divsufsort.c +1 -1
- data/ext/zstdruby/libzstd/dictBuilder/fastcover.c +54 -35
- data/ext/zstdruby/libzstd/dictBuilder/zdict.c +151 -57
- data/ext/zstdruby/libzstd/dll/example/Makefile +2 -1
- data/ext/zstdruby/libzstd/dll/example/README.md +16 -22
- data/ext/zstdruby/libzstd/legacy/zstd_legacy.h +4 -4
- data/ext/zstdruby/libzstd/legacy/zstd_v01.c +25 -19
- data/ext/zstdruby/libzstd/legacy/zstd_v01.h +1 -1
- data/ext/zstdruby/libzstd/legacy/zstd_v02.c +18 -14
- data/ext/zstdruby/libzstd/legacy/zstd_v02.h +1 -1
- data/ext/zstdruby/libzstd/legacy/zstd_v03.c +18 -14
- data/ext/zstdruby/libzstd/legacy/zstd_v03.h +1 -1
- data/ext/zstdruby/libzstd/legacy/zstd_v04.c +22 -16
- data/ext/zstdruby/libzstd/legacy/zstd_v04.h +1 -1
- data/ext/zstdruby/libzstd/legacy/zstd_v05.c +29 -25
- data/ext/zstdruby/libzstd/legacy/zstd_v05.h +2 -2
- data/ext/zstdruby/libzstd/legacy/zstd_v06.c +29 -25
- data/ext/zstdruby/libzstd/legacy/zstd_v06.h +1 -1
- data/ext/zstdruby/libzstd/legacy/zstd_v07.c +34 -26
- data/ext/zstdruby/libzstd/legacy/zstd_v07.h +1 -1
- data/ext/zstdruby/libzstd/libzstd.mk +185 -0
- data/ext/zstdruby/libzstd/libzstd.pc.in +4 -3
- data/ext/zstdruby/libzstd/modulemap/module.modulemap +4 -0
- data/ext/zstdruby/libzstd/{dictBuilder/zdict.h → zdict.h} +201 -31
- data/ext/zstdruby/libzstd/zstd.h +760 -234
- data/ext/zstdruby/libzstd/{common/zstd_errors.h → zstd_errors.h} +3 -1
- data/ext/zstdruby/zstdruby.c +2 -2
- data/lib/zstd-ruby/version.rb +1 -1
- metadata +20 -9
- data/.travis.yml +0 -14
|
@@ -1,23 +1,21 @@
|
|
|
1
|
-
ZSTD Windows binary package
|
|
2
|
-
====================================
|
|
1
|
+
# ZSTD Windows binary package
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
## The package contents
|
|
5
4
|
|
|
6
|
-
- `zstd.exe`
|
|
7
|
-
- `dll\libzstd.dll`
|
|
8
|
-
- `dll\libzstd.lib`
|
|
9
|
-
- `example\`
|
|
10
|
-
- `include\`
|
|
5
|
+
- `zstd.exe` : Command Line Utility, supporting gzip-like arguments
|
|
6
|
+
- `dll\libzstd.dll` : The ZSTD dynamic library (DLL)
|
|
7
|
+
- `dll\libzstd.lib` : The import library of the ZSTD dynamic library (DLL) for Visual C++
|
|
8
|
+
- `example\` : The example of usage of the ZSTD library
|
|
9
|
+
- `include\` : Header files required by the ZSTD library
|
|
11
10
|
- `static\libzstd_static.lib` : The static ZSTD library (LIB)
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
#### Usage of Command Line Interface
|
|
12
|
+
## Usage of Command Line Interface
|
|
15
13
|
|
|
16
14
|
Command Line Interface (CLI) supports gzip-like arguments.
|
|
17
15
|
By default CLI takes an input file and compresses it to an output file:
|
|
18
|
-
|
|
16
|
+
|
|
19
17
|
Usage: zstd [arg] [input] [output]
|
|
20
|
-
|
|
18
|
+
|
|
21
19
|
The full list of commands for CLI can be obtained with `-h` or `-H`. The ratio can
|
|
22
20
|
be improved with commands from `-3` to `-16` but higher levels also have slower
|
|
23
21
|
compression. CLI includes in-memory compression benchmark module with compression
|
|
@@ -25,36 +23,32 @@ levels starting from `-b` and ending with `-e` with iteration time of `-i` secon
|
|
|
25
23
|
CLI supports aggregation of parameters i.e. `-b1`, `-e18`, and `-i1` can be joined
|
|
26
24
|
into `-b1e18i1`.
|
|
27
25
|
|
|
28
|
-
|
|
29
|
-
#### The example of usage of static and dynamic ZSTD libraries with gcc/MinGW
|
|
26
|
+
## The example of usage of static and dynamic ZSTD libraries with gcc/MinGW
|
|
30
27
|
|
|
31
28
|
Use `cd example` and `make` to build `fullbench-dll` and `fullbench-lib`.
|
|
32
29
|
`fullbench-dll` uses a dynamic ZSTD library from the `dll` directory.
|
|
33
30
|
`fullbench-lib` uses a static ZSTD library from the `lib` directory.
|
|
34
31
|
|
|
35
|
-
|
|
36
|
-
#### Using ZSTD DLL with gcc/MinGW
|
|
32
|
+
## Using ZSTD DLL with gcc/MinGW
|
|
37
33
|
|
|
38
34
|
The header files from `include\` and the dynamic library `dll\libzstd.dll`
|
|
39
35
|
are required to compile a project using gcc/MinGW.
|
|
40
36
|
The dynamic library has to be added to linking options.
|
|
41
37
|
It means that if a project that uses ZSTD consists of a single `test-dll.c`
|
|
42
38
|
file it should be linked with `dll\libzstd.dll`. For example:
|
|
43
|
-
|
|
39
|
+
|
|
44
40
|
gcc $(CFLAGS) -Iinclude\ test-dll.c -o test-dll dll\libzstd.dll
|
|
45
|
-
```
|
|
46
|
-
The compiled executable will require ZSTD DLL which is available at `dll\libzstd.dll`.
|
|
47
41
|
|
|
42
|
+
The compiled executable will require ZSTD DLL which is available at `dll\libzstd.dll`.
|
|
48
43
|
|
|
49
|
-
|
|
44
|
+
## The example of usage of static and dynamic ZSTD libraries with Visual C++
|
|
50
45
|
|
|
51
46
|
Open `example\fullbench-dll.sln` to compile `fullbench-dll` that uses a
|
|
52
47
|
dynamic ZSTD library from the `dll` directory. The solution works with Visual C++
|
|
53
48
|
2010 or newer. When one will open the solution with Visual C++ newer than 2010
|
|
54
49
|
then the solution will upgraded to the current version.
|
|
55
50
|
|
|
56
|
-
|
|
57
|
-
#### Using ZSTD DLL with Visual C++
|
|
51
|
+
## Using ZSTD DLL with Visual C++
|
|
58
52
|
|
|
59
53
|
The header files from `include\` and the import library `dll\libzstd.lib`
|
|
60
54
|
are required to compile a project using Visual C++.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Yann Collet, Facebook, Inc.
|
|
3
3
|
* All rights reserved.
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under both the BSD-style license (found in the
|
|
@@ -18,9 +18,9 @@ extern "C" {
|
|
|
18
18
|
/* *************************************
|
|
19
19
|
* Includes
|
|
20
20
|
***************************************/
|
|
21
|
-
#include "mem.h" /* MEM_STATIC */
|
|
22
|
-
#include "error_private.h" /* ERROR */
|
|
23
|
-
#include "zstd_internal.h" /* ZSTD_inBuffer, ZSTD_outBuffer, ZSTD_frameSizeInfo */
|
|
21
|
+
#include "../common/mem.h" /* MEM_STATIC */
|
|
22
|
+
#include "../common/error_private.h" /* ERROR */
|
|
23
|
+
#include "../common/zstd_internal.h" /* ZSTD_inBuffer, ZSTD_outBuffer, ZSTD_frameSizeInfo */
|
|
24
24
|
|
|
25
25
|
#if !defined (ZSTD_LEGACY_SUPPORT) || (ZSTD_LEGACY_SUPPORT == 0)
|
|
26
26
|
# undef ZSTD_LEGACY_SUPPORT
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Yann Collet, Facebook, Inc.
|
|
3
3
|
* All rights reserved.
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under both the BSD-style license (found in the
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
******************************************/
|
|
15
15
|
#include <stddef.h> /* size_t, ptrdiff_t */
|
|
16
16
|
#include "zstd_v01.h"
|
|
17
|
-
#include "error_private.h"
|
|
17
|
+
#include "../common/error_private.h"
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
/******************************************
|
|
@@ -204,10 +204,7 @@ typedef signed long long S64;
|
|
|
204
204
|
* Prefer these methods in priority order (0 > 1 > 2)
|
|
205
205
|
*/
|
|
206
206
|
#ifndef FSE_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */
|
|
207
|
-
# if defined(
|
|
208
|
-
# define FSE_FORCE_MEMORY_ACCESS 2
|
|
209
|
-
# elif (defined(__INTEL_COMPILER) && !defined(WIN32)) || \
|
|
210
|
-
(defined(__GNUC__) && ( defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) ))
|
|
207
|
+
# if defined(__INTEL_COMPILER) || defined(__GNUC__) || defined(__ICCARM__)
|
|
211
208
|
# define FSE_FORCE_MEMORY_ACCESS 1
|
|
212
209
|
# endif
|
|
213
210
|
#endif
|
|
@@ -257,7 +254,7 @@ static U64 FSE_read64(const void* memPtr)
|
|
|
257
254
|
U64 val; memcpy(&val, memPtr, sizeof(val)); return val;
|
|
258
255
|
}
|
|
259
256
|
|
|
260
|
-
#endif
|
|
257
|
+
#endif /* FSE_FORCE_MEMORY_ACCESS */
|
|
261
258
|
|
|
262
259
|
static U16 FSE_readLE16(const void* memPtr)
|
|
263
260
|
{
|
|
@@ -343,8 +340,7 @@ FORCE_INLINE unsigned FSE_highbit32 (U32 val)
|
|
|
343
340
|
{
|
|
344
341
|
# if defined(_MSC_VER) /* Visual */
|
|
345
342
|
unsigned long r;
|
|
346
|
-
_BitScanReverse
|
|
347
|
-
return (unsigned) r;
|
|
343
|
+
return _BitScanReverse(&r, val) ? (unsigned)r : 0;
|
|
348
344
|
# elif defined(__GNUC__) && (GCC_VERSION >= 304) /* GCC Intrinsic */
|
|
349
345
|
return __builtin_clz (val) ^ 31;
|
|
350
346
|
# else /* Software version */
|
|
@@ -1078,7 +1074,7 @@ static size_t HUF_decompress_usingDTable( /* -3% slower when non static */
|
|
|
1078
1074
|
BYTE* const ostart = (BYTE*) dst;
|
|
1079
1075
|
BYTE* op = ostart;
|
|
1080
1076
|
BYTE* const omax = op + maxDstSize;
|
|
1081
|
-
BYTE* const olimit = omax-15;
|
|
1077
|
+
BYTE* const olimit = maxDstSize < 15 ? op : omax-15;
|
|
1082
1078
|
|
|
1083
1079
|
const void* ptr = DTable;
|
|
1084
1080
|
const HUF_DElt* const dt = (const HUF_DElt*)(ptr)+1;
|
|
@@ -1092,7 +1088,7 @@ static size_t HUF_decompress_usingDTable( /* -3% slower when non static */
|
|
|
1092
1088
|
const size_t length1 = FSE_readLE16(jumpTable);
|
|
1093
1089
|
const size_t length2 = FSE_readLE16(jumpTable+1);
|
|
1094
1090
|
const size_t length3 = FSE_readLE16(jumpTable+2);
|
|
1095
|
-
const size_t length4 = cSrcSize - 6 - length1 - length2 - length3;
|
|
1091
|
+
const size_t length4 = cSrcSize - 6 - length1 - length2 - length3; /* check coherency !! */
|
|
1096
1092
|
const char* const start1 = (const char*)(cSrc) + 6;
|
|
1097
1093
|
const char* const start2 = start1 + length1;
|
|
1098
1094
|
const char* const start3 = start2 + length2;
|
|
@@ -1150,11 +1146,11 @@ static size_t HUF_decompress_usingDTable( /* -3% slower when non static */
|
|
|
1150
1146
|
|
|
1151
1147
|
/* tail */
|
|
1152
1148
|
{
|
|
1153
|
-
|
|
1149
|
+
/* bitTail = bitD1; */ /* *much* slower : -20% !??! */
|
|
1154
1150
|
FSE_DStream_t bitTail;
|
|
1155
1151
|
bitTail.ptr = bitD1.ptr;
|
|
1156
1152
|
bitTail.bitsConsumed = bitD1.bitsConsumed;
|
|
1157
|
-
bitTail.bitContainer = bitD1.bitContainer;
|
|
1153
|
+
bitTail.bitContainer = bitD1.bitContainer; /* required in case of FSE_DStream_endOfBuffer */
|
|
1158
1154
|
bitTail.start = start1;
|
|
1159
1155
|
for ( ; (FSE_reloadDStream(&bitTail) < FSE_DStream_completed) && (op<omax) ; op++)
|
|
1160
1156
|
{
|
|
@@ -1280,7 +1276,11 @@ static size_t HUF_decompress (void* dst, size_t maxDstSize, const void* cSrc, si
|
|
|
1280
1276
|
* Basic Types
|
|
1281
1277
|
*********************************************************/
|
|
1282
1278
|
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
|
|
1283
|
-
#
|
|
1279
|
+
# if defined(_AIX)
|
|
1280
|
+
# include <inttypes.h>
|
|
1281
|
+
# else
|
|
1282
|
+
# include <stdint.h> /* intptr_t */
|
|
1283
|
+
# endif
|
|
1284
1284
|
typedef uint8_t BYTE;
|
|
1285
1285
|
typedef uint16_t U16;
|
|
1286
1286
|
typedef int16_t S16;
|
|
@@ -1483,7 +1483,9 @@ static size_t ZSTDv01_getcBlockSize(const void* src, size_t srcSize, blockProper
|
|
|
1483
1483
|
static size_t ZSTD_copyUncompressedBlock(void* dst, size_t maxDstSize, const void* src, size_t srcSize)
|
|
1484
1484
|
{
|
|
1485
1485
|
if (srcSize > maxDstSize) return ERROR(dstSize_tooSmall);
|
|
1486
|
-
|
|
1486
|
+
if (srcSize > 0) {
|
|
1487
|
+
memcpy(dst, src, srcSize);
|
|
1488
|
+
}
|
|
1487
1489
|
return srcSize;
|
|
1488
1490
|
}
|
|
1489
1491
|
|
|
@@ -1502,7 +1504,7 @@ static size_t ZSTD_decompressLiterals(void* ctx,
|
|
|
1502
1504
|
if (srcSize <= 3) return ERROR(corruption_detected);
|
|
1503
1505
|
|
|
1504
1506
|
litSize = ip[1] + (ip[0]<<8);
|
|
1505
|
-
litSize += ((ip[-3] >> 3) & 7) << 16;
|
|
1507
|
+
litSize += ((ip[-3] >> 3) & 7) << 16; /* mmmmh.... */
|
|
1506
1508
|
op = oend - litSize;
|
|
1507
1509
|
|
|
1508
1510
|
(void)ctx;
|
|
@@ -1541,7 +1543,9 @@ static size_t ZSTDv01_decodeLiteralsBlock(void* ctx,
|
|
|
1541
1543
|
size_t rleSize = litbp.origSize;
|
|
1542
1544
|
if (rleSize>maxDstSize) return ERROR(dstSize_tooSmall);
|
|
1543
1545
|
if (!srcSize) return ERROR(srcSize_wrong);
|
|
1544
|
-
|
|
1546
|
+
if (rleSize > 0) {
|
|
1547
|
+
memset(oend - rleSize, *ip, rleSize);
|
|
1548
|
+
}
|
|
1545
1549
|
*litStart = oend - rleSize;
|
|
1546
1550
|
*litSize = rleSize;
|
|
1547
1551
|
ip++;
|
|
@@ -1901,8 +1905,10 @@ static size_t ZSTD_decompressSequences(
|
|
|
1901
1905
|
{
|
|
1902
1906
|
size_t lastLLSize = litEnd - litPtr;
|
|
1903
1907
|
if (op+lastLLSize > oend) return ERROR(dstSize_tooSmall);
|
|
1904
|
-
if (
|
|
1905
|
-
|
|
1908
|
+
if (lastLLSize > 0) {
|
|
1909
|
+
if (op != litPtr) memmove(op, litPtr, lastLLSize);
|
|
1910
|
+
op += lastLLSize;
|
|
1911
|
+
}
|
|
1906
1912
|
}
|
|
1907
1913
|
}
|
|
1908
1914
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Yann Collet, Facebook, Inc.
|
|
3
3
|
* All rights reserved.
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under both the BSD-style license (found in the
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
#include <stddef.h> /* size_t, ptrdiff_t */
|
|
13
13
|
#include "zstd_v02.h"
|
|
14
|
-
#include "error_private.h"
|
|
14
|
+
#include "../common/error_private.h"
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
/******************************************
|
|
@@ -89,7 +89,11 @@ extern "C" {
|
|
|
89
89
|
* Basic Types
|
|
90
90
|
*****************************************************************/
|
|
91
91
|
#if defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
|
|
92
|
-
#
|
|
92
|
+
# if defined(_AIX)
|
|
93
|
+
# include <inttypes.h>
|
|
94
|
+
# else
|
|
95
|
+
# include <stdint.h> /* intptr_t */
|
|
96
|
+
# endif
|
|
93
97
|
typedef uint8_t BYTE;
|
|
94
98
|
typedef uint16_t U16;
|
|
95
99
|
typedef int16_t S16;
|
|
@@ -125,10 +129,7 @@ extern "C" {
|
|
|
125
129
|
* Prefer these methods in priority order (0 > 1 > 2)
|
|
126
130
|
*/
|
|
127
131
|
#ifndef MEM_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */
|
|
128
|
-
# if defined(
|
|
129
|
-
# define MEM_FORCE_MEMORY_ACCESS 2
|
|
130
|
-
# elif (defined(__INTEL_COMPILER) && !defined(WIN32)) || \
|
|
131
|
-
(defined(__GNUC__) && ( defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) ))
|
|
132
|
+
# if defined(__INTEL_COMPILER) || defined(__GNUC__) || defined(__ICCARM__)
|
|
132
133
|
# define MEM_FORCE_MEMORY_ACCESS 1
|
|
133
134
|
# endif
|
|
134
135
|
#endif
|
|
@@ -189,7 +190,7 @@ MEM_STATIC void MEM_write16(void* memPtr, U16 value)
|
|
|
189
190
|
memcpy(memPtr, &value, sizeof(value));
|
|
190
191
|
}
|
|
191
192
|
|
|
192
|
-
#endif
|
|
193
|
+
#endif /* MEM_FORCE_MEMORY_ACCESS */
|
|
193
194
|
|
|
194
195
|
|
|
195
196
|
MEM_STATIC U16 MEM_readLE16(const void* memPtr)
|
|
@@ -349,9 +350,8 @@ MEM_STATIC size_t BIT_readBitsFast(BIT_DStream_t* bitD, unsigned nbBits);
|
|
|
349
350
|
MEM_STATIC unsigned BIT_highbit32 (U32 val)
|
|
350
351
|
{
|
|
351
352
|
# if defined(_MSC_VER) /* Visual */
|
|
352
|
-
unsigned long r
|
|
353
|
-
_BitScanReverse
|
|
354
|
-
return (unsigned) r;
|
|
353
|
+
unsigned long r;
|
|
354
|
+
return _BitScanReverse(&r, val) ? (unsigned)r : 0;
|
|
355
355
|
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
|
356
356
|
return __builtin_clz (val) ^ 31;
|
|
357
357
|
# else /* Software version */
|
|
@@ -2836,7 +2836,9 @@ static size_t ZSTD_getcBlockSize(const void* src, size_t srcSize, blockPropertie
|
|
|
2836
2836
|
static size_t ZSTD_copyUncompressedBlock(void* dst, size_t maxDstSize, const void* src, size_t srcSize)
|
|
2837
2837
|
{
|
|
2838
2838
|
if (srcSize > maxDstSize) return ERROR(dstSize_tooSmall);
|
|
2839
|
-
|
|
2839
|
+
if (srcSize > 0) {
|
|
2840
|
+
memcpy(dst, src, srcSize);
|
|
2841
|
+
}
|
|
2840
2842
|
return srcSize;
|
|
2841
2843
|
}
|
|
2842
2844
|
|
|
@@ -3229,8 +3231,10 @@ static size_t ZSTD_decompressSequences(
|
|
|
3229
3231
|
size_t lastLLSize = litEnd - litPtr;
|
|
3230
3232
|
if (litPtr > litEnd) return ERROR(corruption_detected);
|
|
3231
3233
|
if (op+lastLLSize > oend) return ERROR(dstSize_tooSmall);
|
|
3232
|
-
if (
|
|
3233
|
-
|
|
3234
|
+
if (lastLLSize > 0) {
|
|
3235
|
+
if (op != litPtr) memmove(op, litPtr, lastLLSize);
|
|
3236
|
+
op += lastLLSize;
|
|
3237
|
+
}
|
|
3234
3238
|
}
|
|
3235
3239
|
}
|
|
3236
3240
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Yann Collet, Facebook, Inc.
|
|
3
3
|
* All rights reserved.
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under both the BSD-style license (found in the
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
#include <stddef.h> /* size_t, ptrdiff_t */
|
|
13
13
|
#include "zstd_v03.h"
|
|
14
|
-
#include "error_private.h"
|
|
14
|
+
#include "../common/error_private.h"
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
/******************************************
|
|
@@ -90,7 +90,11 @@ extern "C" {
|
|
|
90
90
|
* Basic Types
|
|
91
91
|
*****************************************************************/
|
|
92
92
|
#if defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
|
|
93
|
-
#
|
|
93
|
+
# if defined(_AIX)
|
|
94
|
+
# include <inttypes.h>
|
|
95
|
+
# else
|
|
96
|
+
# include <stdint.h> /* intptr_t */
|
|
97
|
+
# endif
|
|
94
98
|
typedef uint8_t BYTE;
|
|
95
99
|
typedef uint16_t U16;
|
|
96
100
|
typedef int16_t S16;
|
|
@@ -126,10 +130,7 @@ extern "C" {
|
|
|
126
130
|
* Prefer these methods in priority order (0 > 1 > 2)
|
|
127
131
|
*/
|
|
128
132
|
#ifndef MEM_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */
|
|
129
|
-
# if defined(
|
|
130
|
-
# define MEM_FORCE_MEMORY_ACCESS 2
|
|
131
|
-
# elif (defined(__INTEL_COMPILER) && !defined(WIN32)) || \
|
|
132
|
-
(defined(__GNUC__) && ( defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) ))
|
|
133
|
+
# if defined(__INTEL_COMPILER) || defined(__GNUC__) || defined(__ICCARM__)
|
|
133
134
|
# define MEM_FORCE_MEMORY_ACCESS 1
|
|
134
135
|
# endif
|
|
135
136
|
#endif
|
|
@@ -191,7 +192,7 @@ MEM_STATIC void MEM_write16(void* memPtr, U16 value)
|
|
|
191
192
|
}
|
|
192
193
|
|
|
193
194
|
|
|
194
|
-
#endif
|
|
195
|
+
#endif /* MEM_FORCE_MEMORY_ACCESS */
|
|
195
196
|
|
|
196
197
|
|
|
197
198
|
MEM_STATIC U16 MEM_readLE16(const void* memPtr)
|
|
@@ -352,9 +353,8 @@ MEM_STATIC size_t BIT_readBitsFast(BIT_DStream_t* bitD, unsigned nbBits);
|
|
|
352
353
|
MEM_STATIC unsigned BIT_highbit32 (U32 val)
|
|
353
354
|
{
|
|
354
355
|
# if defined(_MSC_VER) /* Visual */
|
|
355
|
-
unsigned long r
|
|
356
|
-
_BitScanReverse
|
|
357
|
-
return (unsigned) r;
|
|
356
|
+
unsigned long r;
|
|
357
|
+
return _BitScanReverse(&r, val) ? (unsigned)r : 0;
|
|
358
358
|
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
|
359
359
|
return __builtin_clz (val) ^ 31;
|
|
360
360
|
# else /* Software version */
|
|
@@ -2477,7 +2477,9 @@ static size_t ZSTD_getcBlockSize(const void* src, size_t srcSize, blockPropertie
|
|
|
2477
2477
|
static size_t ZSTD_copyUncompressedBlock(void* dst, size_t maxDstSize, const void* src, size_t srcSize)
|
|
2478
2478
|
{
|
|
2479
2479
|
if (srcSize > maxDstSize) return ERROR(dstSize_tooSmall);
|
|
2480
|
-
|
|
2480
|
+
if (srcSize > 0) {
|
|
2481
|
+
memcpy(dst, src, srcSize);
|
|
2482
|
+
}
|
|
2481
2483
|
return srcSize;
|
|
2482
2484
|
}
|
|
2483
2485
|
|
|
@@ -2870,8 +2872,10 @@ static size_t ZSTD_decompressSequences(
|
|
|
2870
2872
|
size_t lastLLSize = litEnd - litPtr;
|
|
2871
2873
|
if (litPtr > litEnd) return ERROR(corruption_detected);
|
|
2872
2874
|
if (op+lastLLSize > oend) return ERROR(dstSize_tooSmall);
|
|
2873
|
-
if (
|
|
2874
|
-
|
|
2875
|
+
if (lastLLSize > 0) {
|
|
2876
|
+
if (op != litPtr) memmove(op, litPtr, lastLLSize);
|
|
2877
|
+
op += lastLLSize;
|
|
2878
|
+
}
|
|
2875
2879
|
}
|
|
2876
2880
|
}
|
|
2877
2881
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Yann Collet, Facebook, Inc.
|
|
3
3
|
* All rights reserved.
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under both the BSD-style license (found in the
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
#include <string.h> /* memcpy */
|
|
17
17
|
|
|
18
18
|
#include "zstd_v04.h"
|
|
19
|
-
#include "error_private.h"
|
|
19
|
+
#include "../common/error_private.h"
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
/* ******************************************************************
|
|
@@ -52,7 +52,11 @@ extern "C" {
|
|
|
52
52
|
* Basic Types
|
|
53
53
|
*****************************************************************/
|
|
54
54
|
#if defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
|
|
55
|
-
#
|
|
55
|
+
# if defined(_AIX)
|
|
56
|
+
# include <inttypes.h>
|
|
57
|
+
# else
|
|
58
|
+
# include <stdint.h> /* intptr_t */
|
|
59
|
+
# endif
|
|
56
60
|
typedef uint8_t BYTE;
|
|
57
61
|
typedef uint16_t U16;
|
|
58
62
|
typedef int16_t S16;
|
|
@@ -74,7 +78,7 @@ extern "C" {
|
|
|
74
78
|
/*-*************************************
|
|
75
79
|
* Debug
|
|
76
80
|
***************************************/
|
|
77
|
-
#include "debug.h"
|
|
81
|
+
#include "../common/debug.h"
|
|
78
82
|
#ifndef assert
|
|
79
83
|
# define assert(condition) ((void)0)
|
|
80
84
|
#endif
|
|
@@ -97,10 +101,7 @@ extern "C" {
|
|
|
97
101
|
* Prefer these methods in priority order (0 > 1 > 2)
|
|
98
102
|
*/
|
|
99
103
|
#ifndef MEM_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */
|
|
100
|
-
# if defined(
|
|
101
|
-
# define MEM_FORCE_MEMORY_ACCESS 2
|
|
102
|
-
# elif (defined(__INTEL_COMPILER) && !defined(WIN32)) || \
|
|
103
|
-
(defined(__GNUC__) && ( defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) ))
|
|
104
|
+
# if defined(__INTEL_COMPILER) || defined(__GNUC__) || defined(__ICCARM__)
|
|
104
105
|
# define MEM_FORCE_MEMORY_ACCESS 1
|
|
105
106
|
# endif
|
|
106
107
|
#endif
|
|
@@ -161,7 +162,7 @@ MEM_STATIC void MEM_write16(void* memPtr, U16 value)
|
|
|
161
162
|
memcpy(memPtr, &value, sizeof(value));
|
|
162
163
|
}
|
|
163
164
|
|
|
164
|
-
#endif
|
|
165
|
+
#endif /* MEM_FORCE_MEMORY_ACCESS */
|
|
165
166
|
|
|
166
167
|
|
|
167
168
|
MEM_STATIC U16 MEM_readLE16(const void* memPtr)
|
|
@@ -623,9 +624,8 @@ MEM_STATIC size_t BIT_readBitsFast(BIT_DStream_t* bitD, unsigned nbBits);
|
|
|
623
624
|
MEM_STATIC unsigned BIT_highbit32 (U32 val)
|
|
624
625
|
{
|
|
625
626
|
# if defined(_MSC_VER) /* Visual */
|
|
626
|
-
unsigned long r
|
|
627
|
-
_BitScanReverse
|
|
628
|
-
return (unsigned) r;
|
|
627
|
+
unsigned long r;
|
|
628
|
+
return _BitScanReverse(&r, val) ? (unsigned)r : 0;
|
|
629
629
|
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
|
630
630
|
return __builtin_clz (val) ^ 31;
|
|
631
631
|
# else /* Software version */
|
|
@@ -2603,7 +2603,9 @@ static size_t ZSTD_getcBlockSize(const void* src, size_t srcSize, blockPropertie
|
|
|
2603
2603
|
static size_t ZSTD_copyRawBlock(void* dst, size_t maxDstSize, const void* src, size_t srcSize)
|
|
2604
2604
|
{
|
|
2605
2605
|
if (srcSize > maxDstSize) return ERROR(dstSize_tooSmall);
|
|
2606
|
-
|
|
2606
|
+
if (srcSize > 0) {
|
|
2607
|
+
memcpy(dst, src, srcSize);
|
|
2608
|
+
}
|
|
2607
2609
|
return srcSize;
|
|
2608
2610
|
}
|
|
2609
2611
|
|
|
@@ -3008,8 +3010,10 @@ static size_t ZSTD_decompressSequences(
|
|
|
3008
3010
|
size_t lastLLSize = litEnd - litPtr;
|
|
3009
3011
|
if (litPtr > litEnd) return ERROR(corruption_detected);
|
|
3010
3012
|
if (op+lastLLSize > oend) return ERROR(dstSize_tooSmall);
|
|
3011
|
-
if (
|
|
3012
|
-
|
|
3013
|
+
if (lastLLSize > 0) {
|
|
3014
|
+
if (op != litPtr) memcpy(op, litPtr, lastLLSize);
|
|
3015
|
+
op += lastLLSize;
|
|
3016
|
+
}
|
|
3013
3017
|
}
|
|
3014
3018
|
}
|
|
3015
3019
|
|
|
@@ -3407,7 +3411,9 @@ static size_t ZBUFF_decompressWithDictionary(ZBUFF_DCtx* zbc, const void* src, s
|
|
|
3407
3411
|
static size_t ZBUFF_limitCopy(void* dst, size_t maxDstSize, const void* src, size_t srcSize)
|
|
3408
3412
|
{
|
|
3409
3413
|
size_t length = MIN(maxDstSize, srcSize);
|
|
3410
|
-
|
|
3414
|
+
if (length > 0) {
|
|
3415
|
+
memcpy(dst, src, length);
|
|
3416
|
+
}
|
|
3411
3417
|
return length;
|
|
3412
3418
|
}
|
|
3413
3419
|
|