zstd-ruby 1.4.4.0 → 1.5.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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,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
|
/*- Dependencies -*/
|
13
13
|
#include "zstd_v05.h"
|
14
|
-
#include "error_private.h"
|
14
|
+
#include "../common/error_private.h"
|
15
15
|
|
16
16
|
|
17
17
|
/* ******************************************************************
|
@@ -80,7 +80,11 @@ extern "C" {
|
|
80
80
|
* Basic Types
|
81
81
|
*****************************************************************/
|
82
82
|
#if defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
|
83
|
-
#
|
83
|
+
# if defined(_AIX)
|
84
|
+
# include <inttypes.h>
|
85
|
+
# else
|
86
|
+
# include <stdint.h> /* intptr_t */
|
87
|
+
# endif
|
84
88
|
typedef uint8_t BYTE;
|
85
89
|
typedef uint16_t U16;
|
86
90
|
typedef int16_t S16;
|
@@ -116,10 +120,7 @@ extern "C" {
|
|
116
120
|
* Prefer these methods in priority order (0 > 1 > 2)
|
117
121
|
*/
|
118
122
|
#ifndef MEM_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */
|
119
|
-
# if defined(
|
120
|
-
# define MEM_FORCE_MEMORY_ACCESS 2
|
121
|
-
# elif (defined(__INTEL_COMPILER) && !defined(WIN32)) || \
|
122
|
-
(defined(__GNUC__) && ( defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) ))
|
123
|
+
# if defined(__INTEL_COMPILER) || defined(__GNUC__) || defined(__ICCARM__)
|
123
124
|
# define MEM_FORCE_MEMORY_ACCESS 1
|
124
125
|
# endif
|
125
126
|
#endif
|
@@ -752,9 +753,8 @@ MEM_STATIC size_t BITv05_readBitsFast(BITv05_DStream_t* bitD, unsigned nbBits);
|
|
752
753
|
MEM_STATIC unsigned BITv05_highbit32 (U32 val)
|
753
754
|
{
|
754
755
|
# if defined(_MSC_VER) /* Visual */
|
755
|
-
unsigned long r
|
756
|
-
_BitScanReverse
|
757
|
-
return (unsigned) r;
|
756
|
+
unsigned long r;
|
757
|
+
return _BitScanReverse(&r, val) ? (unsigned)r : 0;
|
758
758
|
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
759
759
|
return __builtin_clz (val) ^ 31;
|
760
760
|
# else /* Software version */
|
@@ -1804,7 +1804,7 @@ static size_t HUFv05_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
|
|
1804
1804
|
|
1805
1805
|
if (!srcSize) return ERROR(srcSize_wrong);
|
1806
1806
|
iSize = ip[0];
|
1807
|
-
|
1807
|
+
/* memset(huffWeight, 0, hwSize); */ /* is not necessary, even though some analyzer complain ... */
|
1808
1808
|
|
1809
1809
|
if (iSize >= 128) { /* special header */
|
1810
1810
|
if (iSize >= (242)) { /* RLE */
|
@@ -1879,7 +1879,7 @@ size_t HUFv05_readDTableX2 (U16* DTable, const void* src, size_t srcSize)
|
|
1879
1879
|
HUFv05_DEltX2* const dt = (HUFv05_DEltX2*)dtPtr;
|
1880
1880
|
|
1881
1881
|
HUFv05_STATIC_ASSERT(sizeof(HUFv05_DEltX2) == sizeof(U16)); /* if compilation fails here, assertion is false */
|
1882
|
-
|
1882
|
+
/* memset(huffWeight, 0, sizeof(huffWeight)); */ /* is not necessary, even though some analyzer complain ... */
|
1883
1883
|
|
1884
1884
|
iSize = HUFv05_readStats(huffWeight, HUFv05_MAX_SYMBOL_VALUE + 1, rankVal, &nbSymbols, &tableLog, src, srcSize);
|
1885
1885
|
if (HUFv05_isError(iSize)) return iSize;
|
@@ -2210,7 +2210,7 @@ size_t HUFv05_readDTableX4 (unsigned* DTable, const void* src, size_t srcSize)
|
|
2210
2210
|
|
2211
2211
|
HUFv05_STATIC_ASSERT(sizeof(HUFv05_DEltX4) == sizeof(unsigned)); /* if compilation fails here, assertion is false */
|
2212
2212
|
if (memLog > HUFv05_ABSOLUTEMAX_TABLELOG) return ERROR(tableLog_tooLarge);
|
2213
|
-
|
2213
|
+
/* memset(weightList, 0, sizeof(weightList)); */ /* is not necessary, even though some analyzer complain ... */
|
2214
2214
|
|
2215
2215
|
iSize = HUFv05_readStats(weightList, HUFv05_MAX_SYMBOL_VALUE + 1, rankStats, &nbSymbols, &tableLog, src, srcSize);
|
2216
2216
|
if (HUFv05_isError(iSize)) return iSize;
|
@@ -2539,9 +2539,9 @@ size_t HUFv05_decompress (void* dst, size_t dstSize, const void* cSrc, size_t cS
|
|
2539
2539
|
|
2540
2540
|
return decompress[algoNb](dst, dstSize, cSrc, cSrcSize);
|
2541
2541
|
|
2542
|
-
|
2543
|
-
|
2544
|
-
|
2542
|
+
/* return HUFv05_decompress4X2(dst, dstSize, cSrc, cSrcSize); */ /* multi-streams single-symbol decoding */
|
2543
|
+
/* return HUFv05_decompress4X4(dst, dstSize, cSrc, cSrcSize); */ /* multi-streams double-symbols decoding */
|
2544
|
+
/* return HUFv05_decompress4X6(dst, dstSize, cSrc, cSrcSize); */ /* multi-streams quad-symbols decoding */
|
2545
2545
|
}
|
2546
2546
|
/*
|
2547
2547
|
zstd - standard compression library
|
@@ -2829,7 +2829,7 @@ static size_t ZSTDv05_decodeFrameHeader_Part2(ZSTDv05_DCtx* zc, const void* src,
|
|
2829
2829
|
|
2830
2830
|
static size_t ZSTDv05_getcBlockSize(const void* src, size_t srcSize, blockProperties_t* bpPtr)
|
2831
2831
|
{
|
2832
|
-
const BYTE* const in = (const BYTE*
|
2832
|
+
const BYTE* const in = (const BYTE*)src;
|
2833
2833
|
BYTE headerFlags;
|
2834
2834
|
U32 cSize;
|
2835
2835
|
|
@@ -2998,7 +2998,7 @@ static size_t ZSTDv05_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t
|
|
2998
2998
|
FSEv05_DTable* DTableLL, FSEv05_DTable* DTableML, FSEv05_DTable* DTableOffb,
|
2999
2999
|
const void* src, size_t srcSize, U32 flagStaticTable)
|
3000
3000
|
{
|
3001
|
-
const BYTE* const istart = (const BYTE*
|
3001
|
+
const BYTE* const istart = (const BYTE*)src;
|
3002
3002
|
const BYTE* ip = istart;
|
3003
3003
|
const BYTE* const iend = istart + srcSize;
|
3004
3004
|
U32 LLtype, Offtype, MLtype;
|
@@ -3306,7 +3306,7 @@ static size_t ZSTDv05_decompressSequences(
|
|
3306
3306
|
{
|
3307
3307
|
const BYTE* ip = (const BYTE*)seqStart;
|
3308
3308
|
const BYTE* const iend = ip + seqSize;
|
3309
|
-
BYTE* const ostart = (BYTE*
|
3309
|
+
BYTE* const ostart = (BYTE*)dst;
|
3310
3310
|
BYTE* op = ostart;
|
3311
3311
|
BYTE* const oend = ostart + maxDstSize;
|
3312
3312
|
size_t errorCode, dumpsLength=0;
|
@@ -3362,8 +3362,10 @@ static size_t ZSTDv05_decompressSequences(
|
|
3362
3362
|
size_t lastLLSize = litEnd - litPtr;
|
3363
3363
|
if (litPtr > litEnd) return ERROR(corruption_detected); /* too many literals already used */
|
3364
3364
|
if (op+lastLLSize > oend) return ERROR(dstSize_tooSmall);
|
3365
|
-
|
3366
|
-
|
3365
|
+
if (lastLLSize > 0) {
|
3366
|
+
memcpy(op, litPtr, lastLLSize);
|
3367
|
+
op += lastLLSize;
|
3368
|
+
}
|
3367
3369
|
}
|
3368
3370
|
|
3369
3371
|
return op-ostart;
|
@@ -3417,7 +3419,7 @@ static size_t ZSTDv05_decompress_continueDCtx(ZSTDv05_DCtx* dctx,
|
|
3417
3419
|
{
|
3418
3420
|
const BYTE* ip = (const BYTE*)src;
|
3419
3421
|
const BYTE* iend = ip + srcSize;
|
3420
|
-
BYTE* const ostart = (BYTE*
|
3422
|
+
BYTE* const ostart = (BYTE*)dst;
|
3421
3423
|
BYTE* op = ostart;
|
3422
3424
|
BYTE* const oend = ostart + maxDstSize;
|
3423
3425
|
size_t remainingSize = srcSize;
|
@@ -3791,7 +3793,9 @@ static size_t ZBUFFv05_blockHeaderSize = 3;
|
|
3791
3793
|
static size_t ZBUFFv05_limitCopy(void* dst, size_t maxDstSize, const void* src, size_t srcSize)
|
3792
3794
|
{
|
3793
3795
|
size_t length = MIN(maxDstSize, srcSize);
|
3794
|
-
|
3796
|
+
if (length > 0) {
|
3797
|
+
memcpy(dst, src, length);
|
3798
|
+
}
|
3795
3799
|
return length;
|
3796
3800
|
}
|
3797
3801
|
|
@@ -3928,7 +3932,7 @@ size_t ZBUFFv05_decompressContinue(ZBUFFv05_DCtx* zbc, void* dst, size_t* maxDst
|
|
3928
3932
|
*maxDstSizePtr = 0;
|
3929
3933
|
return headerSize - zbc->hPos;
|
3930
3934
|
}
|
3931
|
-
|
3935
|
+
/* zbc->stage = ZBUFFv05ds_decodeHeader; break; */ /* useless : stage follows */
|
3932
3936
|
}
|
3933
3937
|
/* fall-through */
|
3934
3938
|
case ZBUFFv05ds_decodeHeader:
|
@@ -4001,7 +4005,7 @@ size_t ZBUFFv05_decompressContinue(ZBUFFv05_DCtx* zbc, void* dst, size_t* maxDst
|
|
4001
4005
|
if (!decodedSize) { zbc->stage = ZBUFFv05ds_read; break; } /* this was just a header */
|
4002
4006
|
zbc->outEnd = zbc->outStart + decodedSize;
|
4003
4007
|
zbc->stage = ZBUFFv05ds_flush;
|
4004
|
-
|
4008
|
+
/* break; */ /* ZBUFFv05ds_flush follows */
|
4005
4009
|
}
|
4006
4010
|
}
|
4007
4011
|
/* fall-through */
|
@@ -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
|
@@ -19,7 +19,7 @@ extern "C" {
|
|
19
19
|
* Dependencies
|
20
20
|
***************************************/
|
21
21
|
#include <stddef.h> /* size_t */
|
22
|
-
#include "mem.h" /* U64, U32 */
|
22
|
+
#include "../common/mem.h" /* U64, U32 */
|
23
23
|
|
24
24
|
|
25
25
|
/* *************************************
|
@@ -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
|
#include <stddef.h> /* size_t, ptrdiff_t */
|
15
15
|
#include <string.h> /* memcpy */
|
16
16
|
#include <stdlib.h> /* malloc, free, qsort */
|
17
|
-
#include "error_private.h"
|
17
|
+
#include "../common/error_private.h"
|
18
18
|
|
19
19
|
|
20
20
|
|
@@ -82,7 +82,11 @@ extern "C" {
|
|
82
82
|
* Basic Types
|
83
83
|
*****************************************************************/
|
84
84
|
#if !defined (__VMS) && (defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) )
|
85
|
-
#
|
85
|
+
# if defined(_AIX)
|
86
|
+
# include <inttypes.h>
|
87
|
+
# else
|
88
|
+
# include <stdint.h> /* intptr_t */
|
89
|
+
# endif
|
86
90
|
typedef uint8_t BYTE;
|
87
91
|
typedef uint16_t U16;
|
88
92
|
typedef int16_t S16;
|
@@ -118,10 +122,7 @@ extern "C" {
|
|
118
122
|
* Prefer these methods in priority order (0 > 1 > 2)
|
119
123
|
*/
|
120
124
|
#ifndef MEM_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */
|
121
|
-
# if defined(
|
122
|
-
# define MEM_FORCE_MEMORY_ACCESS 2
|
123
|
-
# elif (defined(__INTEL_COMPILER) && !defined(WIN32)) || \
|
124
|
-
(defined(__GNUC__) && ( defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) ))
|
125
|
+
# if defined(__INTEL_COMPILER) || defined(__GNUC__) || defined(__ICCARM__)
|
125
126
|
# define MEM_FORCE_MEMORY_ACCESS 1
|
126
127
|
# endif
|
127
128
|
#endif
|
@@ -856,9 +857,8 @@ MEM_STATIC size_t BITv06_readBitsFast(BITv06_DStream_t* bitD, unsigned nbBits);
|
|
856
857
|
MEM_STATIC unsigned BITv06_highbit32 ( U32 val)
|
857
858
|
{
|
858
859
|
# if defined(_MSC_VER) /* Visual */
|
859
|
-
unsigned long r
|
860
|
-
_BitScanReverse
|
861
|
-
return (unsigned) r;
|
860
|
+
unsigned long r;
|
861
|
+
return _BitScanReverse(&r, val) ? (unsigned)r : 0;
|
862
862
|
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
863
863
|
return __builtin_clz (val) ^ 31;
|
864
864
|
# else /* Software version */
|
@@ -1862,7 +1862,7 @@ MEM_STATIC size_t HUFv06_readStats(BYTE* huffWeight, size_t hwSize, U32* rankSta
|
|
1862
1862
|
|
1863
1863
|
if (!srcSize) return ERROR(srcSize_wrong);
|
1864
1864
|
iSize = ip[0];
|
1865
|
-
|
1865
|
+
/* memset(huffWeight, 0, hwSize); */ /* is not necessary, even though some analyzer complain ... */
|
1866
1866
|
|
1867
1867
|
if (iSize >= 128) { /* special header */
|
1868
1868
|
if (iSize >= (242)) { /* RLE */
|
@@ -2014,7 +2014,7 @@ size_t HUFv06_readDTableX2 (U16* DTable, const void* src, size_t srcSize)
|
|
2014
2014
|
HUFv06_DEltX2* const dt = (HUFv06_DEltX2*)dtPtr;
|
2015
2015
|
|
2016
2016
|
HUFv06_STATIC_ASSERT(sizeof(HUFv06_DEltX2) == sizeof(U16)); /* if compilation fails here, assertion is false */
|
2017
|
-
|
2017
|
+
/* memset(huffWeight, 0, sizeof(huffWeight)); */ /* is not necessary, even though some analyzer complain ... */
|
2018
2018
|
|
2019
2019
|
iSize = HUFv06_readStats(huffWeight, HUFv06_MAX_SYMBOL_VALUE + 1, rankVal, &nbSymbols, &tableLog, src, srcSize);
|
2020
2020
|
if (HUFv06_isError(iSize)) return iSize;
|
@@ -2340,7 +2340,7 @@ size_t HUFv06_readDTableX4 (U32* DTable, const void* src, size_t srcSize)
|
|
2340
2340
|
|
2341
2341
|
HUFv06_STATIC_ASSERT(sizeof(HUFv06_DEltX4) == sizeof(U32)); /* if compilation fails here, assertion is false */
|
2342
2342
|
if (memLog > HUFv06_ABSOLUTEMAX_TABLELOG) return ERROR(tableLog_tooLarge);
|
2343
|
-
|
2343
|
+
/* memset(weightList, 0, sizeof(weightList)); */ /* is not necessary, even though some analyzer complain ... */
|
2344
2344
|
|
2345
2345
|
iSize = HUFv06_readStats(weightList, HUFv06_MAX_SYMBOL_VALUE + 1, rankStats, &nbSymbols, &tableLog, src, srcSize);
|
2346
2346
|
if (HUFv06_isError(iSize)) return iSize;
|
@@ -2664,13 +2664,13 @@ size_t HUFv06_decompress (void* dst, size_t dstSize, const void* cSrc, size_t cS
|
|
2664
2664
|
|
2665
2665
|
{ U32 algoNb = 0;
|
2666
2666
|
if (Dtime[1] < Dtime[0]) algoNb = 1;
|
2667
|
-
|
2667
|
+
/* if (Dtime[2] < Dtime[algoNb]) algoNb = 2; */ /* current speed of HUFv06_decompress4X6 is not good */
|
2668
2668
|
return decompress[algoNb](dst, dstSize, cSrc, cSrcSize);
|
2669
2669
|
}
|
2670
2670
|
|
2671
|
-
|
2672
|
-
|
2673
|
-
|
2671
|
+
/* return HUFv06_decompress4X2(dst, dstSize, cSrc, cSrcSize); */ /* multi-streams single-symbol decoding */
|
2672
|
+
/* return HUFv06_decompress4X4(dst, dstSize, cSrc, cSrcSize); */ /* multi-streams double-symbols decoding */
|
2673
|
+
/* return HUFv06_decompress4X6(dst, dstSize, cSrc, cSrcSize); */ /* multi-streams quad-symbols decoding */
|
2674
2674
|
}
|
2675
2675
|
/*
|
2676
2676
|
Common functions of Zstd compression library
|
@@ -3025,7 +3025,7 @@ typedef struct
|
|
3025
3025
|
* Provides the size of compressed block from block header `src` */
|
3026
3026
|
static size_t ZSTDv06_getcBlockSize(const void* src, size_t srcSize, blockProperties_t* bpPtr)
|
3027
3027
|
{
|
3028
|
-
const BYTE* const in = (const BYTE*
|
3028
|
+
const BYTE* const in = (const BYTE*)src;
|
3029
3029
|
U32 cSize;
|
3030
3030
|
|
3031
3031
|
if (srcSize < ZSTDv06_blockHeaderSize) return ERROR(srcSize_wrong);
|
@@ -3219,7 +3219,7 @@ static size_t ZSTDv06_decodeSeqHeaders(int* nbSeqPtr,
|
|
3219
3219
|
FSEv06_DTable* DTableLL, FSEv06_DTable* DTableML, FSEv06_DTable* DTableOffb, U32 flagRepeatTable,
|
3220
3220
|
const void* src, size_t srcSize)
|
3221
3221
|
{
|
3222
|
-
const BYTE* const istart = (const BYTE*
|
3222
|
+
const BYTE* const istart = (const BYTE*)src;
|
3223
3223
|
const BYTE* const iend = istart + srcSize;
|
3224
3224
|
const BYTE* ip = istart;
|
3225
3225
|
|
@@ -3441,7 +3441,7 @@ static size_t ZSTDv06_decompressSequences(
|
|
3441
3441
|
{
|
3442
3442
|
const BYTE* ip = (const BYTE*)seqStart;
|
3443
3443
|
const BYTE* const iend = ip + seqSize;
|
3444
|
-
BYTE* const ostart = (BYTE*
|
3444
|
+
BYTE* const ostart = (BYTE*)dst;
|
3445
3445
|
BYTE* const oend = ostart + maxDstSize;
|
3446
3446
|
BYTE* op = ostart;
|
3447
3447
|
const BYTE* litPtr = dctx->litPtr;
|
@@ -3501,8 +3501,10 @@ static size_t ZSTDv06_decompressSequences(
|
|
3501
3501
|
{ size_t const lastLLSize = litEnd - litPtr;
|
3502
3502
|
if (litPtr > litEnd) return ERROR(corruption_detected); /* too many literals already used */
|
3503
3503
|
if (op+lastLLSize > oend) return ERROR(dstSize_tooSmall);
|
3504
|
-
|
3505
|
-
|
3504
|
+
if (lastLLSize > 0) {
|
3505
|
+
memcpy(op, litPtr, lastLLSize);
|
3506
|
+
op += lastLLSize;
|
3507
|
+
}
|
3506
3508
|
}
|
3507
3509
|
|
3508
3510
|
return op-ostart;
|
@@ -3555,7 +3557,7 @@ static size_t ZSTDv06_decompressFrame(ZSTDv06_DCtx* dctx,
|
|
3555
3557
|
{
|
3556
3558
|
const BYTE* ip = (const BYTE*)src;
|
3557
3559
|
const BYTE* const iend = ip + srcSize;
|
3558
|
-
BYTE* const ostart = (BYTE*
|
3560
|
+
BYTE* const ostart = (BYTE*)dst;
|
3559
3561
|
BYTE* op = ostart;
|
3560
3562
|
BYTE* const oend = ostart + dstCapacity;
|
3561
3563
|
size_t remainingSize = srcSize;
|
@@ -4000,7 +4002,9 @@ size_t ZBUFFv06_decompressInit(ZBUFFv06_DCtx* zbd)
|
|
4000
4002
|
MEM_STATIC size_t ZBUFFv06_limitCopy(void* dst, size_t dstCapacity, const void* src, size_t srcSize)
|
4001
4003
|
{
|
4002
4004
|
size_t length = MIN(dstCapacity, srcSize);
|
4003
|
-
|
4005
|
+
if (length > 0) {
|
4006
|
+
memcpy(dst, src, length);
|
4007
|
+
}
|
4004
4008
|
return length;
|
4005
4009
|
}
|
4006
4010
|
|
@@ -4109,7 +4113,7 @@ size_t ZBUFFv06_decompressContinue(ZBUFFv06_DCtx* zbd,
|
|
4109
4113
|
if (!decodedSize) { zbd->stage = ZBUFFds_read; break; } /* this was just a header */
|
4110
4114
|
zbd->outEnd = zbd->outStart + decodedSize;
|
4111
4115
|
zbd->stage = ZBUFFds_flush;
|
4112
|
-
|
4116
|
+
/* break; */ /* ZBUFFds_flush follows */
|
4113
4117
|
}
|
4114
4118
|
}
|
4115
4119
|
/* fall-through */
|
@@ -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
|
@@ -17,14 +17,14 @@
|
|
17
17
|
#ifndef XXH_STATIC_LINKING_ONLY
|
18
18
|
# define XXH_STATIC_LINKING_ONLY /* XXH64_state_t */
|
19
19
|
#endif
|
20
|
-
#include "xxhash.h" /* XXH64_* */
|
20
|
+
#include "../common/xxhash.h" /* XXH64_* */
|
21
21
|
#include "zstd_v07.h"
|
22
22
|
|
23
23
|
#define FSEv07_STATIC_LINKING_ONLY /* FSEv07_MIN_TABLELOG */
|
24
24
|
#define HUFv07_STATIC_LINKING_ONLY /* HUFv07_TABLELOG_ABSOLUTEMAX */
|
25
25
|
#define ZSTDv07_STATIC_LINKING_ONLY
|
26
26
|
|
27
|
-
#include "error_private.h"
|
27
|
+
#include "../common/error_private.h"
|
28
28
|
|
29
29
|
|
30
30
|
#ifdef ZSTDv07_STATIC_LINKING_ONLY
|
@@ -242,7 +242,11 @@ extern "C" {
|
|
242
242
|
* Basic Types
|
243
243
|
*****************************************************************/
|
244
244
|
#if !defined (__VMS) && (defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) )
|
245
|
-
#
|
245
|
+
# if defined(_AIX)
|
246
|
+
# include <inttypes.h>
|
247
|
+
# else
|
248
|
+
# include <stdint.h> /* intptr_t */
|
249
|
+
# endif
|
246
250
|
typedef uint8_t BYTE;
|
247
251
|
typedef uint16_t U16;
|
248
252
|
typedef int16_t S16;
|
@@ -278,10 +282,7 @@ extern "C" {
|
|
278
282
|
* Prefer these methods in priority order (0 > 1 > 2)
|
279
283
|
*/
|
280
284
|
#ifndef MEM_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */
|
281
|
-
# if defined(
|
282
|
-
# define MEM_FORCE_MEMORY_ACCESS 2
|
283
|
-
# elif (defined(__INTEL_COMPILER) && !defined(WIN32)) || \
|
284
|
-
(defined(__GNUC__) && ( defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) ))
|
285
|
+
# if defined(__INTEL_COMPILER) || defined(__GNUC__) || defined(__ICCARM__)
|
285
286
|
# define MEM_FORCE_MEMORY_ACCESS 1
|
286
287
|
# endif
|
287
288
|
#endif
|
@@ -526,9 +527,8 @@ MEM_STATIC size_t BITv07_readBitsFast(BITv07_DStream_t* bitD, unsigned nbBits);
|
|
526
527
|
MEM_STATIC unsigned BITv07_highbit32 (U32 val)
|
527
528
|
{
|
528
529
|
# if defined(_MSC_VER) /* Visual */
|
529
|
-
unsigned long r
|
530
|
-
_BitScanReverse
|
531
|
-
return (unsigned) r;
|
530
|
+
unsigned long r;
|
531
|
+
return _BitScanReverse(&r, val) ? (unsigned)r : 0;
|
532
532
|
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
533
533
|
return __builtin_clz (val) ^ 31;
|
534
534
|
# else /* Software version */
|
@@ -1314,7 +1314,7 @@ size_t HUFv07_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
|
|
1314
1314
|
|
1315
1315
|
if (!srcSize) return ERROR(srcSize_wrong);
|
1316
1316
|
iSize = ip[0];
|
1317
|
-
|
1317
|
+
/* memset(huffWeight, 0, hwSize); */ /* is not necessary, even though some analyzer complain ... */
|
1318
1318
|
|
1319
1319
|
if (iSize >= 128) { /* special header */
|
1320
1320
|
if (iSize >= (242)) { /* RLE */
|
@@ -1784,7 +1784,7 @@ size_t HUFv07_readDTableX2 (HUFv07_DTable* DTable, const void* src, size_t srcSi
|
|
1784
1784
|
HUFv07_DEltX2* const dt = (HUFv07_DEltX2*)dtPtr;
|
1785
1785
|
|
1786
1786
|
HUFv07_STATIC_ASSERT(sizeof(DTableDesc) == sizeof(HUFv07_DTable));
|
1787
|
-
|
1787
|
+
/* memset(huffWeight, 0, sizeof(huffWeight)); */ /* is not necessary, even though some analyzer complain ... */
|
1788
1788
|
|
1789
1789
|
iSize = HUFv07_readStats(huffWeight, HUFv07_SYMBOLVALUE_MAX + 1, rankVal, &nbSymbols, &tableLog, src, srcSize);
|
1790
1790
|
if (HUFv07_isError(iSize)) return iSize;
|
@@ -2148,7 +2148,7 @@ size_t HUFv07_readDTableX4 (HUFv07_DTable* DTable, const void* src, size_t srcSi
|
|
2148
2148
|
|
2149
2149
|
HUFv07_STATIC_ASSERT(sizeof(HUFv07_DEltX4) == sizeof(HUFv07_DTable)); /* if compilation fails here, assertion is false */
|
2150
2150
|
if (maxTableLog > HUFv07_TABLELOG_ABSOLUTEMAX) return ERROR(tableLog_tooLarge);
|
2151
|
-
|
2151
|
+
/* memset(weightList, 0, sizeof(weightList)); */ /* is not necessary, even though some analyzer complain ... */
|
2152
2152
|
|
2153
2153
|
iSize = HUFv07_readStats(weightList, HUFv07_SYMBOLVALUE_MAX + 1, rankStats, &nbSymbols, &tableLog, src, srcSize);
|
2154
2154
|
if (HUFv07_isError(iSize)) return iSize;
|
@@ -2530,8 +2530,8 @@ size_t HUFv07_decompress (void* dst, size_t dstSize, const void* cSrc, size_t cS
|
|
2530
2530
|
return decompress[algoNb](dst, dstSize, cSrc, cSrcSize);
|
2531
2531
|
}
|
2532
2532
|
|
2533
|
-
|
2534
|
-
|
2533
|
+
/* return HUFv07_decompress4X2(dst, dstSize, cSrc, cSrcSize); */ /* multi-streams single-symbol decoding */
|
2534
|
+
/* return HUFv07_decompress4X4(dst, dstSize, cSrc, cSrcSize); */ /* multi-streams double-symbols decoding */
|
2535
2535
|
}
|
2536
2536
|
|
2537
2537
|
size_t HUFv07_decompress4X_DCtx (HUFv07_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize)
|
@@ -3254,7 +3254,7 @@ typedef struct
|
|
3254
3254
|
* Provides the size of compressed block from block header `src` */
|
3255
3255
|
static size_t ZSTDv07_getcBlockSize(const void* src, size_t srcSize, blockProperties_t* bpPtr)
|
3256
3256
|
{
|
3257
|
-
const BYTE* const in = (const BYTE*
|
3257
|
+
const BYTE* const in = (const BYTE*)src;
|
3258
3258
|
U32 cSize;
|
3259
3259
|
|
3260
3260
|
if (srcSize < ZSTDv07_blockHeaderSize) return ERROR(srcSize_wrong);
|
@@ -3272,7 +3272,9 @@ static size_t ZSTDv07_getcBlockSize(const void* src, size_t srcSize, blockProper
|
|
3272
3272
|
static size_t ZSTDv07_copyRawBlock(void* dst, size_t dstCapacity, const void* src, size_t srcSize)
|
3273
3273
|
{
|
3274
3274
|
if (srcSize > dstCapacity) return ERROR(dstSize_tooSmall);
|
3275
|
-
|
3275
|
+
if (srcSize > 0) {
|
3276
|
+
memcpy(dst, src, srcSize);
|
3277
|
+
}
|
3276
3278
|
return srcSize;
|
3277
3279
|
}
|
3278
3280
|
|
@@ -3447,7 +3449,7 @@ static size_t ZSTDv07_decodeSeqHeaders(int* nbSeqPtr,
|
|
3447
3449
|
FSEv07_DTable* DTableLL, FSEv07_DTable* DTableML, FSEv07_DTable* DTableOffb, U32 flagRepeatTable,
|
3448
3450
|
const void* src, size_t srcSize)
|
3449
3451
|
{
|
3450
|
-
const BYTE* const istart = (const BYTE*
|
3452
|
+
const BYTE* const istart = (const BYTE*)src;
|
3451
3453
|
const BYTE* const iend = istart + srcSize;
|
3452
3454
|
const BYTE* ip = istart;
|
3453
3455
|
|
@@ -3666,7 +3668,7 @@ static size_t ZSTDv07_decompressSequences(
|
|
3666
3668
|
{
|
3667
3669
|
const BYTE* ip = (const BYTE*)seqStart;
|
3668
3670
|
const BYTE* const iend = ip + seqSize;
|
3669
|
-
BYTE* const ostart = (BYTE*
|
3671
|
+
BYTE* const ostart = (BYTE*)dst;
|
3670
3672
|
BYTE* const oend = ostart + maxDstSize;
|
3671
3673
|
BYTE* op = ostart;
|
3672
3674
|
const BYTE* litPtr = dctx->litPtr;
|
@@ -3712,10 +3714,12 @@ static size_t ZSTDv07_decompressSequences(
|
|
3712
3714
|
|
3713
3715
|
/* last literal segment */
|
3714
3716
|
{ size_t const lastLLSize = litEnd - litPtr;
|
3715
|
-
|
3717
|
+
/* if (litPtr > litEnd) return ERROR(corruption_detected); */ /* too many literals already used */
|
3716
3718
|
if (lastLLSize > (size_t)(oend-op)) return ERROR(dstSize_tooSmall);
|
3717
|
-
|
3718
|
-
|
3719
|
+
if (lastLLSize > 0) {
|
3720
|
+
memcpy(op, litPtr, lastLLSize);
|
3721
|
+
op += lastLLSize;
|
3722
|
+
}
|
3719
3723
|
}
|
3720
3724
|
|
3721
3725
|
return op-ostart;
|
@@ -3776,7 +3780,9 @@ ZSTDLIBv07_API size_t ZSTDv07_insertBlock(ZSTDv07_DCtx* dctx, const void* blockS
|
|
3776
3780
|
static size_t ZSTDv07_generateNxBytes(void* dst, size_t dstCapacity, BYTE byte, size_t length)
|
3777
3781
|
{
|
3778
3782
|
if (length > dstCapacity) return ERROR(dstSize_tooSmall);
|
3779
|
-
|
3783
|
+
if (length > 0) {
|
3784
|
+
memset(dst, byte, length);
|
3785
|
+
}
|
3780
3786
|
return length;
|
3781
3787
|
}
|
3782
3788
|
|
@@ -3789,7 +3795,7 @@ static size_t ZSTDv07_decompressFrame(ZSTDv07_DCtx* dctx,
|
|
3789
3795
|
{
|
3790
3796
|
const BYTE* ip = (const BYTE*)src;
|
3791
3797
|
const BYTE* const iend = ip + srcSize;
|
3792
|
-
BYTE* const ostart = (BYTE*
|
3798
|
+
BYTE* const ostart = (BYTE*)dst;
|
3793
3799
|
BYTE* const oend = ostart + dstCapacity;
|
3794
3800
|
BYTE* op = ostart;
|
3795
3801
|
size_t remainingSize = srcSize;
|
@@ -4378,7 +4384,9 @@ size_t ZBUFFv07_decompressInit(ZBUFFv07_DCtx* zbd)
|
|
4378
4384
|
MEM_STATIC size_t ZBUFFv07_limitCopy(void* dst, size_t dstCapacity, const void* src, size_t srcSize)
|
4379
4385
|
{
|
4380
4386
|
size_t const length = MIN(dstCapacity, srcSize);
|
4381
|
-
|
4387
|
+
if (length > 0) {
|
4388
|
+
memcpy(dst, src, length);
|
4389
|
+
}
|
4382
4390
|
return length;
|
4383
4391
|
}
|
4384
4392
|
|