extzstd 0.0.3.CONCEPT-x86-mingw32 → 0.1-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/HISTORY.ja +5 -0
- data/LICENSE +6 -6
- data/README.md +35 -22
- data/contrib/zstd/LICENSE +13 -9
- data/contrib/zstd/README.md +37 -44
- data/contrib/zstd/common/entropy_common.c +33 -39
- data/contrib/zstd/common/error_private.c +43 -0
- data/contrib/zstd/common/error_private.h +11 -60
- data/contrib/zstd/common/fse.h +11 -5
- data/contrib/zstd/common/fse_decompress.c +14 -16
- data/contrib/zstd/common/huf.h +1 -1
- data/contrib/zstd/common/mem.h +36 -43
- data/contrib/zstd/common/xxhash.c +31 -18
- data/contrib/zstd/common/xxhash.h +71 -35
- data/contrib/zstd/common/zbuff.h +29 -35
- data/contrib/zstd/common/zstd_common.c +24 -32
- data/contrib/zstd/common/zstd_errors.h +60 -0
- data/contrib/zstd/common/zstd_internal.h +109 -80
- data/contrib/zstd/compress/fse_compress.c +9 -6
- data/contrib/zstd/compress/huf_compress.c +30 -74
- data/contrib/zstd/compress/zbuff_compress.c +43 -51
- data/contrib/zstd/compress/zstd_compress.c +953 -763
- data/contrib/zstd/compress/zstd_opt.h +115 -261
- data/contrib/zstd/decompress/huf_decompress.c +29 -40
- data/contrib/zstd/decompress/zbuff_decompress.c +36 -78
- data/contrib/zstd/decompress/zstd_decompress.c +976 -496
- data/contrib/zstd/dictBuilder/divsufsort.h +5 -5
- data/contrib/zstd/dictBuilder/zdict.c +194 -229
- data/contrib/zstd/dictBuilder/zdict.h +66 -68
- data/contrib/zstd/legacy/zstd_legacy.h +168 -49
- data/contrib/zstd/legacy/zstd_v01.c +95 -178
- data/contrib/zstd/legacy/zstd_v01.h +12 -32
- data/contrib/zstd/legacy/zstd_v02.c +48 -274
- data/contrib/zstd/legacy/zstd_v02.h +12 -32
- data/contrib/zstd/legacy/zstd_v03.c +48 -274
- data/contrib/zstd/legacy/zstd_v03.h +12 -32
- data/contrib/zstd/legacy/zstd_v04.c +63 -320
- data/contrib/zstd/legacy/zstd_v04.h +13 -33
- data/contrib/zstd/legacy/zstd_v05.c +80 -345
- data/contrib/zstd/legacy/zstd_v05.h +9 -31
- data/contrib/zstd/legacy/zstd_v06.c +48 -458
- data/contrib/zstd/legacy/zstd_v06.h +41 -67
- data/contrib/zstd/legacy/zstd_v07.c +4544 -0
- data/contrib/zstd/legacy/zstd_v07.h +173 -0
- data/contrib/zstd/zstd.h +640 -0
- data/ext/extconf.rb +7 -3
- data/ext/extzstd.c +263 -106
- data/ext/extzstd.h +8 -6
- data/ext/extzstd_nogvls.h +0 -117
- data/ext/extzstd_stream.c +347 -0
- data/ext/zstd_common.c +8 -0
- data/ext/zstd_compress.c +6 -0
- data/ext/zstd_decompress.c +5 -0
- data/ext/zstd_dictbuilder.c +5 -0
- data/ext/zstd_legacy_v07.c +1 -0
- data/gemstub.rb +18 -16
- data/lib/2.1/extzstd.so +0 -0
- data/lib/2.2/extzstd.so +0 -0
- data/lib/2.3/extzstd.so +0 -0
- data/lib/extzstd/version.rb +1 -1
- data/lib/extzstd.rb +77 -43
- data/test/test_basic.rb +11 -6
- metadata +23 -11
- data/contrib/zstd/common/error_public.h +0 -77
- data/contrib/zstd/common/zstd.h +0 -475
- data/ext/extzstd_buffered.c +0 -265
- data/ext/zstd_amalgam.c +0 -18
- data/lib/2.0/extzstd.so +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 304f17cd776244a146f3d2b6077de16b0a028b6c
|
4
|
+
data.tar.gz: 557b07fb1ce871790ad3bf0c50e63baaf9ff7595
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8bb9a1dcbb8b9670514b28cdd8ea9a6727a41bed4de21249cfd9cb812ba0fbf8b65191b3c0a8bf3d0b4374bad6bb6b7fa16c2a230fc69a77d3771063f431c855
|
7
|
+
data.tar.gz: f63c68baa0d78f01be21c5ad6ec82a74dabeecdde3ca9d6684e4f00b30f7116c3954d2715ea0df2a000f1196b6fefd6bcb5c6250d9b5839baeb3f094b45d177a
|
data/HISTORY.ja
ADDED
data/LICENSE
CHANGED
@@ -4,12 +4,12 @@ Redistribution and use in source and binary forms, with or
|
|
4
4
|
without modification, are permitted provided that the following
|
5
5
|
conditions are met:
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
7
|
+
1. Redistributions of source code must retain the above copyright
|
8
|
+
notice, this list of conditions and the following disclaimer.
|
9
|
+
2. Redistributions in binary form must reproduce the above copyright
|
10
|
+
notice, this list of conditions and the following disclaimer in
|
11
|
+
the documentation and/or other materials provided with the
|
12
|
+
distribution.
|
13
13
|
|
14
14
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
15
15
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
data/README.md
CHANGED
@@ -1,48 +1,61 @@
|
|
1
1
|
# extzstd - ruby bindings for Zstd (Zstandard)
|
2
2
|
|
3
3
|
This is unofficial ruby bindings for compression library
|
4
|
-
[Zstd (
|
4
|
+
[Zstd (Zstandard)](https://github.com/facebook/zstd).
|
5
5
|
|
6
6
|
* package name: extzstd
|
7
|
-
* version: 0.
|
7
|
+
* version: 0.1
|
8
8
|
* software quality: EXPERIMENTAL
|
9
|
-
* license: 2-clause
|
9
|
+
* license: BSD-2-clause License
|
10
10
|
* author: dearblue <mailto:dearblue@users.osdn.me>
|
11
11
|
* report issue to: <https://osdn.jp/projects/rutsubo/ticket/>
|
12
|
-
* dependency ruby: ruby-2.
|
12
|
+
* dependency ruby: ruby-2.1+
|
13
13
|
* dependency ruby gems: (none)
|
14
14
|
* dependency library: (none)
|
15
15
|
* bundled external C library:
|
16
|
-
* zstd-
|
16
|
+
* zstd-1.1.1 <https://github.com/facebook/zstd/tree/v1.1.1>
|
17
17
|
|
18
|
-
|
18
|
+
under BSD-3-clause License <https://github.com/facebook/zstd/blob/v1.1.1/LICENSE>
|
19
|
+
|
20
|
+
by facebook <https://github.com/facebook>
|
21
|
+
|
22
|
+
"extzstd" is supported decompression with the legacy formats (zstd-0.1 - 0.7).
|
19
23
|
|
20
24
|
|
21
25
|
## Quick API Reference
|
22
26
|
|
23
|
-
*
|
24
|
-
* ``Zstd.encode(buf, params = nil, dict
|
25
|
-
* ``Zstd.encode(outport, params = nil, dict
|
26
|
-
* ``Zstd.encode(outport, params = nil, dict
|
27
|
+
* encoder (compression)
|
28
|
+
* ``Zstd.encode(buf, params = nil, dict: nil) -> encoded string``
|
29
|
+
* ``Zstd.encode(outport, params = nil, dict: nil) -> an instance of Zstd::Encoder``
|
30
|
+
* ``Zstd.encode(outport, params = nil, dict: nil) { |encoder| ... } -> block returned value``
|
27
31
|
* ``Zstd::Encoder#write(buf) -> this instance``
|
28
32
|
* ``Zstd::Encoder#close -> nil``
|
29
33
|
|
30
|
-
*
|
31
|
-
* ``Zstd.decode(zstd_buf, dict
|
32
|
-
* ``Zstd.decode(inport, dict
|
33
|
-
* ``Zstd.decode(inport, dict
|
34
|
+
* decoder (decompression)
|
35
|
+
* ``Zstd.decode(zstd_buf, dict: nil) -> decoded string``
|
36
|
+
* ``Zstd.decode(inport, dict: nil) -> an intance of Zstd::Decoder``
|
37
|
+
* ``Zstd.decode(inport, dict: nil) { |decoder| ... } -> block returned value``
|
34
38
|
* ``Zstd::Decoder#read(size = nil, buf = nil) -> buf``
|
35
39
|
* ``Zstd::Decoder#close -> nil``
|
36
40
|
|
37
|
-
*
|
38
|
-
* ``Zstd::
|
39
|
-
* ``Zstd::
|
40
|
-
* ``Zstd::
|
41
|
-
* ``Zstd::
|
41
|
+
* stream encoder
|
42
|
+
* ``Zstd::StreamEncoder.new(params, dict)`` (``ZSTD_createCStream``, ``ZSTD_initCStream_advanced``)
|
43
|
+
* ``Zstd::StreamEncoder#update(src, srcoff, dest, maxdest) -> integer as new src offset`` (``ZSTD_compressStream``)
|
44
|
+
* ``Zstd::StreamEncoder#flush(dest, maxdest) -> dest`` (``ZSTD_flushStream``)
|
45
|
+
* ``Zstd::StreamEncoder#end(dest, maxdest) -> dest`` (``ZSTD_endStream``)
|
46
|
+
|
47
|
+
* stream decoder
|
48
|
+
* ``Zstd::StreamDecoder.new(dict)`` (``ZSTD_createDStream``, ``ZSTD_initDStream_usingDict``)
|
49
|
+
* ``Zstd::StreamDecoder#update(src, srcoff, dest, maxdest) -> integer as new src offset`` (``ZSTD_decompressStream``)
|
50
|
+
|
51
|
+
* instant (context less) encoder/decoder
|
52
|
+
* ``Zstd::ContextLess.encode(src, dest, maxdest, predict, params) -> dest`` (``ZSTD_compress_usingDict``, ``ZSTD_compress_advanced``)
|
53
|
+
* ``Zstd::ContextLess.decode(src, dest, maxdest, predict) -> dest`` (``ZSTD_decompress_usingDict``)
|
42
54
|
|
43
|
-
*
|
44
|
-
* ``Zstd.
|
45
|
-
* ``Zstd.
|
55
|
+
* dictionary (*EXPEREMENTAL*)
|
56
|
+
* ``Zstd::Dictionary.train_from_buffer(buf, dict_capacity) -> dictionary'ed string`` (``ZDICT_trainFromBuffer``)
|
57
|
+
* ``Zstd::Dictionary.add_entropy_tables_from_buffer(dict, dict_capacity, sample) -> dict`` (``ZDICT_addEntropyTablesFromBuffer``)
|
58
|
+
* ``Zstd::Dictionary.getid(dict) -> dict id as integer`` (``ZDICT_getDictID``)
|
46
59
|
|
47
60
|
|
48
61
|
## HOW TO USE
|
data/contrib/zstd/LICENSE
CHANGED
@@ -1,18 +1,22 @@
|
|
1
|
-
ZSTD Library
|
2
|
-
Copyright (c) 2014-2015, Yann Collet
|
3
|
-
All rights reserved.
|
4
|
-
|
5
1
|
BSD License
|
6
2
|
|
3
|
+
For Zstandard software
|
4
|
+
|
5
|
+
Copyright (c) 2016-present, Facebook, Inc. All rights reserved.
|
6
|
+
|
7
7
|
Redistribution and use in source and binary forms, with or without modification,
|
8
8
|
are permitted provided that the following conditions are met:
|
9
9
|
|
10
|
-
* Redistributions of source code must retain the above copyright notice, this
|
11
|
-
|
10
|
+
* Redistributions of source code must retain the above copyright notice, this
|
11
|
+
list of conditions and the following disclaimer.
|
12
|
+
|
13
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
14
|
+
this list of conditions and the following disclaimer in the documentation
|
15
|
+
and/or other materials provided with the distribution.
|
12
16
|
|
13
|
-
*
|
14
|
-
|
15
|
-
|
17
|
+
* Neither the name Facebook nor the names of its contributors may be used to
|
18
|
+
endorse or promote products derived from this software without specific
|
19
|
+
prior written permission.
|
16
20
|
|
17
21
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18
22
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
data/contrib/zstd/README.md
CHANGED
@@ -1,62 +1,54 @@
|
|
1
|
-
|
1
|
+
Zstandard library files
|
2
2
|
================================
|
3
3
|
|
4
|
-
The __lib__ directory contains several
|
4
|
+
The __lib__ directory contains several directories.
|
5
|
+
Depending on target use case, it's enough to include only files from relevant directories.
|
5
6
|
|
6
|
-
#### Minimal library files
|
7
7
|
|
8
|
-
|
8
|
+
#### API
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
- [common/error_public.h](common/error_public.h)
|
13
|
-
- common/fse.h
|
14
|
-
- common/fse_decompress.c
|
15
|
-
- common/huf.h
|
16
|
-
- [common/mem.h](common/mem.h)
|
17
|
-
- [common/zstd.h]
|
18
|
-
- common/zstd_internal.h
|
19
|
-
- compress/fse_compress.c
|
20
|
-
- compress/huf_compress.c
|
21
|
-
- compress/zstd_compress.c
|
22
|
-
- compress/zstd_opt.h
|
23
|
-
- decompress/huf_decompress.c
|
24
|
-
- decompress/zstd_decompress.c
|
10
|
+
Zstandard's stable API is exposed within [zstd.h](zstd.h),
|
11
|
+
at the root of `lib` directory.
|
25
12
|
|
26
|
-
Stable API is exposed in [common/zstd.h].
|
27
|
-
Advanced and experimental API can be enabled by defining `ZSTD_STATIC_LINKING_ONLY`.
|
28
|
-
Never use them with a dynamic library, as their definition may change in future versions.
|
29
13
|
|
30
|
-
|
14
|
+
#### Advanced API
|
31
15
|
|
16
|
+
Some additional API may be useful if you're looking into advanced features :
|
17
|
+
- common/error_public.h : transforms `size_t` function results into an `enum`,
|
18
|
+
for precise error handling.
|
19
|
+
- ZSTD_STATIC_LINKING_ONLY : if you define this macro _before_ including `zstd.h`,
|
20
|
+
it will give access to advanced and experimental API.
|
21
|
+
These APIs shall ___never be used with dynamic library___ !
|
22
|
+
They are not "stable", their definition may change in the future.
|
23
|
+
Only static linking is allowed.
|
32
24
|
|
33
|
-
#### Separate compressor and decompressor
|
34
25
|
|
35
|
-
|
36
|
-
In a similar way to build a separate zstd decompressor all files from `common/` and `decompressor/` directories are needed.
|
26
|
+
#### Modular build
|
37
27
|
|
28
|
+
Directory `common/` is required in all circumstances.
|
29
|
+
You can select to support compression only, by just adding files from the `compress/` directory,
|
30
|
+
In a similar way, you can build a decompressor-only library with the `decompress/` directory.
|
38
31
|
|
39
|
-
|
32
|
+
Other optional functionalities provided are :
|
40
33
|
|
41
|
-
|
42
|
-
|
34
|
+
- `dictBuilder/` : source files to create dictionaries.
|
35
|
+
The API can be consulted in `dictBuilder/zdict.h`.
|
36
|
+
This module also depends on `common/` and `compress/` .
|
43
37
|
|
44
|
-
-
|
45
|
-
|
46
|
-
|
38
|
+
- `legacy/` : source code to decompress previous versions of zstd, starting from `v0.1`.
|
39
|
+
This module also depends on `common/` and `decompress/` .
|
40
|
+
Library compilation must include directive `ZSTD_LEGACY_SUPPORT = 1` .
|
41
|
+
The main API can be consulted in `legacy/zstd_legacy.h`.
|
42
|
+
Advanced API from each version can be found in their relevant header file.
|
43
|
+
For example, advanced API for version `v0.4` is in `legacy/zstd_v04.h` .
|
47
44
|
|
48
45
|
|
49
|
-
####
|
46
|
+
#### Obsolete streaming API
|
50
47
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
#### Legacy support
|
56
|
-
|
57
|
-
Zstandard can decode previous formats, starting from v0.1.
|
58
|
-
Support for these format is provided in [folder legacy](legacy/).
|
59
|
-
It's also required to compile the library with `ZSTD_LEGACY_SUPPORT = 1`.
|
48
|
+
Streaming is now provided within `zstd.h`.
|
49
|
+
Older streaming API is still provided within `common/zbuff.h`.
|
50
|
+
It is considered obsolete, and will be removed in a future version.
|
51
|
+
Consider migrating towards newer streaming API.
|
60
52
|
|
61
53
|
|
62
54
|
#### Miscellaneous
|
@@ -64,5 +56,6 @@ It's also required to compile the library with `ZSTD_LEGACY_SUPPORT = 1`.
|
|
64
56
|
The other files are not source code. There are :
|
65
57
|
|
66
58
|
- LICENSE : contains the BSD license text
|
67
|
-
- Makefile : script to compile or install zstd library (static
|
68
|
-
- libzstd.pc.in : for pkg-config (make install)
|
59
|
+
- Makefile : script to compile or install zstd library (static and dynamic)
|
60
|
+
- libzstd.pc.in : for pkg-config (`make install`)
|
61
|
+
- README.md : this file
|
@@ -38,10 +38,9 @@
|
|
38
38
|
#include "mem.h"
|
39
39
|
#include "error_private.h" /* ERR_*, ERROR */
|
40
40
|
#define FSE_STATIC_LINKING_ONLY /* FSE_MIN_TABLELOG */
|
41
|
-
#include "fse.h"
|
41
|
+
#include "fse.h"
|
42
42
|
#define HUF_STATIC_LINKING_ONLY /* HUF_TABLELOG_ABSOLUTEMAX */
|
43
|
-
#include "huf.h"
|
44
|
-
|
43
|
+
#include "huf.h"
|
45
44
|
|
46
45
|
|
47
46
|
/*-****************************************
|
@@ -63,7 +62,7 @@ const char* HUF_getErrorName(size_t code) { return ERR_getErrorName(code); }
|
|
63
62
|
/*-**************************************************************
|
64
63
|
* FSE NCount encoding-decoding
|
65
64
|
****************************************************************/
|
66
|
-
static short FSE_abs(short a) { return a<0 ? -a : a; }
|
65
|
+
static short FSE_abs(short a) { return (short)(a<0 ? -a : a); }
|
67
66
|
|
68
67
|
size_t FSE_readNCount (short* normalizedCounter, unsigned* maxSVPtr, unsigned* tableLogPtr,
|
69
68
|
const void* headerBuffer, size_t hbSize)
|
@@ -90,22 +89,22 @@ size_t FSE_readNCount (short* normalizedCounter, unsigned* maxSVPtr, unsigned* t
|
|
90
89
|
threshold = 1<<nbBits;
|
91
90
|
nbBits++;
|
92
91
|
|
93
|
-
while ((remaining>1)
|
92
|
+
while ((remaining>1) & (charnum<=*maxSVPtr)) {
|
94
93
|
if (previous0) {
|
95
94
|
unsigned n0 = charnum;
|
96
95
|
while ((bitStream & 0xFFFF) == 0xFFFF) {
|
97
|
-
n0+=24;
|
96
|
+
n0 += 24;
|
98
97
|
if (ip < iend-5) {
|
99
|
-
ip+=2;
|
98
|
+
ip += 2;
|
100
99
|
bitStream = MEM_readLE32(ip) >> bitCount;
|
101
100
|
} else {
|
102
101
|
bitStream >>= 16;
|
103
|
-
bitCount+=16;
|
102
|
+
bitCount += 16;
|
104
103
|
} }
|
105
104
|
while ((bitStream & 3) == 3) {
|
106
|
-
n0+=3;
|
107
|
-
bitStream>>=2;
|
108
|
-
bitCount+=2;
|
105
|
+
n0 += 3;
|
106
|
+
bitStream >>= 2;
|
107
|
+
bitCount += 2;
|
109
108
|
}
|
110
109
|
n0 += bitStream & 3;
|
111
110
|
bitCount += 2;
|
@@ -115,10 +114,9 @@ size_t FSE_readNCount (short* normalizedCounter, unsigned* maxSVPtr, unsigned* t
|
|
115
114
|
ip += bitCount>>3;
|
116
115
|
bitCount &= 7;
|
117
116
|
bitStream = MEM_readLE32(ip) >> bitCount;
|
118
|
-
}
|
119
|
-
else
|
117
|
+
} else {
|
120
118
|
bitStream >>= 2;
|
121
|
-
}
|
119
|
+
} }
|
122
120
|
{ short const max = (short)((2*threshold-1)-remaining);
|
123
121
|
short count;
|
124
122
|
|
@@ -148,12 +146,12 @@ size_t FSE_readNCount (short* normalizedCounter, unsigned* maxSVPtr, unsigned* t
|
|
148
146
|
ip = iend - 4;
|
149
147
|
}
|
150
148
|
bitStream = MEM_readLE32(ip) >> (bitCount & 31);
|
151
|
-
} } /* while ((remaining>1)
|
152
|
-
if (remaining != 1) return ERROR(
|
149
|
+
} } /* while ((remaining>1) & (charnum<=*maxSVPtr)) */
|
150
|
+
if (remaining != 1) return ERROR(corruption_detected);
|
151
|
+
if (bitCount > 32) return ERROR(corruption_detected);
|
153
152
|
*maxSVPtr = charnum-1;
|
154
153
|
|
155
154
|
ip += (bitCount+7)>>3;
|
156
|
-
if ((size_t)(ip-istart) > hbSize) return ERROR(srcSize_wrong);
|
157
155
|
return ip-istart;
|
158
156
|
}
|
159
157
|
|
@@ -162,7 +160,7 @@ size_t FSE_readNCount (short* normalizedCounter, unsigned* maxSVPtr, unsigned* t
|
|
162
160
|
Read compact Huffman tree, saved by HUF_writeCTable().
|
163
161
|
`huffWeight` is destination buffer.
|
164
162
|
@return : size read from `src` , or an error Code .
|
165
|
-
Note : Needed by HUF_readCTable() and
|
163
|
+
Note : Needed by HUF_readCTable() and HUF_readDTableX?() .
|
166
164
|
*/
|
167
165
|
size_t HUF_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
|
168
166
|
U32* nbSymbolsPtr, U32* tableLogPtr,
|
@@ -170,29 +168,24 @@ size_t HUF_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
|
|
170
168
|
{
|
171
169
|
U32 weightTotal;
|
172
170
|
const BYTE* ip = (const BYTE*) src;
|
173
|
-
size_t iSize
|
171
|
+
size_t iSize;
|
174
172
|
size_t oSize;
|
175
173
|
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
{ U32 n;
|
192
|
-
for (n=0; n<oSize; n+=2) {
|
193
|
-
huffWeight[n] = ip[n/2] >> 4;
|
194
|
-
huffWeight[n+1] = ip[n/2] & 15;
|
195
|
-
} } } }
|
174
|
+
if (!srcSize) return ERROR(srcSize_wrong);
|
175
|
+
iSize = ip[0];
|
176
|
+
/* memset(huffWeight, 0, hwSize); *//* is not necessary, even though some analyzer complain ... */
|
177
|
+
|
178
|
+
if (iSize >= 128) { /* special header */
|
179
|
+
oSize = iSize - 127;
|
180
|
+
iSize = ((oSize+1)/2);
|
181
|
+
if (iSize+1 > srcSize) return ERROR(srcSize_wrong);
|
182
|
+
if (oSize >= hwSize) return ERROR(corruption_detected);
|
183
|
+
ip += 1;
|
184
|
+
{ U32 n;
|
185
|
+
for (n=0; n<oSize; n+=2) {
|
186
|
+
huffWeight[n] = ip[n/2] >> 4;
|
187
|
+
huffWeight[n+1] = ip[n/2] & 15;
|
188
|
+
} } }
|
196
189
|
else { /* header compressed with FSE (normal case) */
|
197
190
|
if (iSize+1 > srcSize) return ERROR(srcSize_wrong);
|
198
191
|
oSize = FSE_decompress(huffWeight, hwSize-1, ip+1, iSize); /* max (hwSize-1) values decoded, as last one is implied */
|
@@ -207,6 +200,7 @@ size_t HUF_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
|
|
207
200
|
rankStats[huffWeight[n]]++;
|
208
201
|
weightTotal += (1 << huffWeight[n]) >> 1;
|
209
202
|
} }
|
203
|
+
if (weightTotal == 0) return ERROR(corruption_detected);
|
210
204
|
|
211
205
|
/* get last non-null symbol weight (implied, total must be 2^n) */
|
212
206
|
{ U32 const tableLog = BIT_highbit32(weightTotal) + 1;
|
@@ -0,0 +1,43 @@
|
|
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
|
+
/* The purpose of this file is to have a single list of error strings embedded in binary */
|
11
|
+
|
12
|
+
#include "error_private.h"
|
13
|
+
|
14
|
+
const char* ERR_getErrorString(ERR_enum code)
|
15
|
+
{
|
16
|
+
static const char* const notErrorCode = "Unspecified error code";
|
17
|
+
switch( code )
|
18
|
+
{
|
19
|
+
case PREFIX(no_error): return "No error detected";
|
20
|
+
case PREFIX(GENERIC): return "Error (generic)";
|
21
|
+
case PREFIX(prefix_unknown): return "Unknown frame descriptor";
|
22
|
+
case PREFIX(version_unsupported): return "Version not supported";
|
23
|
+
case PREFIX(parameter_unknown): return "Unknown parameter type";
|
24
|
+
case PREFIX(frameParameter_unsupported): return "Unsupported frame parameter";
|
25
|
+
case PREFIX(frameParameter_unsupportedBy32bits): return "Frame parameter unsupported in 32-bits mode";
|
26
|
+
case PREFIX(frameParameter_windowTooLarge): return "Frame requires too much memory for decoding";
|
27
|
+
case PREFIX(compressionParameter_unsupported): return "Compression parameter is out of bound";
|
28
|
+
case PREFIX(init_missing): return "Context should be init first";
|
29
|
+
case PREFIX(memory_allocation): return "Allocation error : not enough memory";
|
30
|
+
case PREFIX(stage_wrong): return "Operation not authorized at current processing stage";
|
31
|
+
case PREFIX(dstSize_tooSmall): return "Destination buffer is too small";
|
32
|
+
case PREFIX(srcSize_wrong): return "Src size incorrect";
|
33
|
+
case PREFIX(corruption_detected): return "Corrupted block detected";
|
34
|
+
case PREFIX(checksum_wrong): return "Restored data doesn't match checksum";
|
35
|
+
case PREFIX(tableLog_tooLarge): return "tableLog requires too much memory : unsupported";
|
36
|
+
case PREFIX(maxSymbolValue_tooLarge): return "Unsupported max Symbol Value : too large";
|
37
|
+
case PREFIX(maxSymbolValue_tooSmall): return "Specified maxSymbolValue is too small";
|
38
|
+
case PREFIX(dictionary_corrupted): return "Dictionary is corrupted";
|
39
|
+
case PREFIX(dictionary_wrong): return "Dictionary mismatch";
|
40
|
+
case PREFIX(maxCode):
|
41
|
+
default: return notErrorCode;
|
42
|
+
}
|
43
|
+
}
|
@@ -1,35 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
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
|
-
- Homepage : http://www.zstd.net
|
32
|
-
****************************************************************** */
|
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
|
+
|
33
10
|
/* Note : this module is expected to remain private, do not expose it */
|
34
11
|
|
35
12
|
#ifndef ERROR_H_MODULE
|
@@ -44,7 +21,7 @@ extern "C" {
|
|
44
21
|
* Dependencies
|
45
22
|
******************************************/
|
46
23
|
#include <stddef.h> /* size_t */
|
47
|
-
#include "
|
24
|
+
#include "zstd_errors.h" /* enum list */
|
48
25
|
|
49
26
|
|
50
27
|
/* ****************************************
|
@@ -85,33 +62,7 @@ ERR_STATIC ERR_enum ERR_getErrorCode(size_t code) { if (!ERR_isError(code)) retu
|
|
85
62
|
* Error Strings
|
86
63
|
******************************************/
|
87
64
|
|
88
|
-
|
89
|
-
{
|
90
|
-
static const char* notErrorCode = "Unspecified error code";
|
91
|
-
switch( code )
|
92
|
-
{
|
93
|
-
case PREFIX(no_error): return "No error detected";
|
94
|
-
case PREFIX(GENERIC): return "Error (generic)";
|
95
|
-
case PREFIX(prefix_unknown): return "Unknown frame descriptor";
|
96
|
-
case PREFIX(frameParameter_unsupported): return "Unsupported frame parameter";
|
97
|
-
case PREFIX(frameParameter_unsupportedBy32bits): return "Frame parameter unsupported in 32-bits mode";
|
98
|
-
case PREFIX(compressionParameter_unsupported): return "Compression parameter is out of bound";
|
99
|
-
case PREFIX(init_missing): return "Context should be init first";
|
100
|
-
case PREFIX(memory_allocation): return "Allocation error : not enough memory";
|
101
|
-
case PREFIX(stage_wrong): return "Operation not authorized at current processing stage";
|
102
|
-
case PREFIX(dstSize_tooSmall): return "Destination buffer is too small";
|
103
|
-
case PREFIX(srcSize_wrong): return "Src size incorrect";
|
104
|
-
case PREFIX(corruption_detected): return "Corrupted block detected";
|
105
|
-
case PREFIX(checksum_wrong): return "Restored data doesn't match checksum";
|
106
|
-
case PREFIX(tableLog_tooLarge): return "tableLog requires too much memory : unsupported";
|
107
|
-
case PREFIX(maxSymbolValue_tooLarge): return "Unsupported max Symbol Value : too large";
|
108
|
-
case PREFIX(maxSymbolValue_tooSmall): return "Specified maxSymbolValue is too small";
|
109
|
-
case PREFIX(dictionary_corrupted): return "Dictionary is corrupted";
|
110
|
-
case PREFIX(dictionary_wrong): return "Dictionary mismatch";
|
111
|
-
case PREFIX(maxCode):
|
112
|
-
default: return notErrorCode;
|
113
|
-
}
|
114
|
-
}
|
65
|
+
const char* ERR_getErrorString(ERR_enum code); /* error_private.c */
|
115
66
|
|
116
67
|
ERR_STATIC const char* ERR_getErrorName(size_t code)
|
117
68
|
{
|
data/contrib/zstd/common/fse.h
CHANGED
@@ -503,7 +503,8 @@ MEM_STATIC void FSE_flushCState(BIT_CStream_t* bitC, const FSE_CState_t* statePt
|
|
503
503
|
BIT_flushBits(bitC);
|
504
504
|
}
|
505
505
|
|
506
|
-
|
506
|
+
|
507
|
+
/* ====== Decompression ====== */
|
507
508
|
|
508
509
|
typedef struct {
|
509
510
|
U16 tableLog;
|
@@ -581,14 +582,19 @@ MEM_STATIC unsigned FSE_endOfDState(const FSE_DState_t* DStatePtr)
|
|
581
582
|
* Increasing memory usage improves compression ratio
|
582
583
|
* Reduced memory usage can improve speed, due to cache effect
|
583
584
|
* Recommended max value is 14, for 16KB, which nicely fits into Intel x86 L1 cache */
|
584
|
-
#
|
585
|
-
#define
|
585
|
+
#ifndef FSE_MAX_MEMORY_USAGE
|
586
|
+
# define FSE_MAX_MEMORY_USAGE 14
|
587
|
+
#endif
|
588
|
+
#ifndef FSE_DEFAULT_MEMORY_USAGE
|
589
|
+
# define FSE_DEFAULT_MEMORY_USAGE 13
|
590
|
+
#endif
|
586
591
|
|
587
592
|
/*!FSE_MAX_SYMBOL_VALUE :
|
588
593
|
* Maximum symbol value authorized.
|
589
594
|
* Required for proper stack allocation */
|
590
|
-
#
|
591
|
-
|
595
|
+
#ifndef FSE_MAX_SYMBOL_VALUE
|
596
|
+
# define FSE_MAX_SYMBOL_VALUE 255
|
597
|
+
#endif
|
592
598
|
|
593
599
|
/* **************************************************************
|
594
600
|
* template functions type & suffix
|