Yann Collet
8c6ca6283d
Merge pull request #511 from lz4/decFast
...
Fixed performance issue with LZ4_decompress_fast()
2018-04-24 11:25:57 -07:00
Cyan4973
44bff3fd3b
re-ordered parenthesis
...
to avoid mixing && and &
as suggested by @terrelln
2018-04-23 19:26:02 -07:00
Yann Collet
0c2ae72ba8
Merge pull request #507 from lz4/clangPerf
...
fixed lz4_fast clang performance
2018-04-23 15:55:56 -07:00
Cyan4973
cd0663456f
disable shortcut for LZ4_decompress_fast()
...
improving speed
2018-04-23 15:47:08 -07:00
Nick Terrell
672799e814
Fix compilation error and assert.
2018-04-23 14:21:02 -07:00
Nick Terrell
bb83cad98f
Fix input size validation edge cases
...
The bug is a read up to 2 bytes past the end of the buffer.
There are three cases for this bug, one for each test case added.
* An empty input causes `token = *ip++` to read one byte too far.
* A one byte input with `(token >> ML_BITS) == RUN_MASK` causes
one extra byte to be read without validation. This could be
combined with the first bug to cause 2 extra bytes to be read.
* The case pointed out in issue #508 , where `ip == iend` at the
beginning of the loop after taking the shortcut.
Benchmarks show no regressions on clang or gcc-7 on both my mac
and devserver.
Fixes #508 .
2018-04-23 13:34:18 -07:00
Cyan4973
d1f21883d6
fixed incorrect comment
2018-04-21 00:11:51 -07:00
Yann Collet
a8a5dfd426
fixed clang performance in lz4_fast
...
The simple change from
`matchIndex+MAX_DISTANCE < current`
towards
`current - matchIndex > MAX_DISTANCE`
is enough to generate a 10% performance drop under clang.
Quite massive.
(I missed as my eyes were concentrated on gcc performance at that time).
The second version is more robust, because it also survives a situation where
`matchIndex > current`
due to overflows.
The first version requires matchIndex to not overflow.
Hence were added `assert()` conditions.
The only case where this can happen is with dictCtx compression,
in the case where the dictionary context is not initialized before loading the dictionary.
So it's enough to always initialize the context while loading the dictionary.
2018-04-20 18:09:51 -07:00
Yann Collet
62d7cdcc74
Merge pull request #503 from lz4/l120
...
minor length reduction of several large lines
2018-04-19 11:50:20 -07:00
Yann Collet
dede47f13b
Merge pull request #502 from lhacc1/dev
...
Wrap likely/unlikely macroses with #ifndef
2018-04-19 10:52:48 -07:00
Yann Collet
46058d71aa
modified indentation for consistency
2018-04-19 10:50:40 -07:00
Yann Collet
4785bd6a35
minor length reduction of several large lines
2018-04-18 16:49:27 -07:00
Dmitrii Rodionov
ea6ed46fc2
Wrap likely/unlikely macroses with #ifndef
...
It prevent redefine error when project using lz4 has its own likely/unlikely
macroses.
2018-04-18 12:20:56 +03:00
Yann Collet
5ad4599c5a
fixed LZ4_compress_fast_extState_fastReset() in 32-bit mode
2018-04-17 16:47:56 -07:00
Yann Collet
88cca1723e
fix dictDelta setting error
...
wrong test
2018-04-17 16:18:37 -07:00
Yann Collet
1520642183
fix matchIndex overflow
...
can happen with dictCtx
2018-04-17 15:29:17 -07:00
Yann Collet
ce78d10c1f
Merge branch 'dev' into lowAddr
2018-04-17 12:07:22 -07:00
W. Felix Handte
aedc447804
Always Bump Offset by 64 KB in LZ4_loadDict()
...
This actually ensures the guarantee referred to in the comment in
LZ4_compress_fast_continue().
2018-04-17 14:09:00 -04:00
Yann Collet
da3b5ba6f0
fixed dictCtx compression
2018-04-16 23:59:42 -07:00
Yann Collet
444211d259
edited a few traces for debugging
2018-04-16 17:16:08 -07:00
Yann Collet
a3aeb34184
fixed minor format warnings
2018-04-16 16:54:03 -07:00
Yann Collet
e928064797
fixed gcc performance regression
2018-04-16 15:11:28 -07:00
Yann Collet
d2bcfa31f5
fixed minor unused variable warning
2018-04-13 02:45:32 -07:00
Yann Collet
c40bac31d3
added comment on variables required after _next_match
2018-04-13 02:26:14 -07:00
Yann Collet
54ec83ce1f
fixed potential ptrdiff_t overflow (32-bits mode)
...
Also removed pointer comparison, which should solve #485
2018-04-13 02:10:53 -07:00
Cyan4973
57afa36795
compatibility with gcc-4.4 string.h version
...
Someone found it would be a great idea to define there a global variable under the very generic name "index".
Cause problem with shadow warnings, so no variable can be named "index" now ...
Also : automatically update API manual
2018-04-13 01:01:54 -07:00
test4973
db9aa785c5
fixed : counting matches which overlap extDict and prefix
2018-04-12 16:12:21 -07:00
test4973
8af32ce6f7
modified a few traces for debug
2018-04-12 13:35:19 -07:00
test4973
1838803948
fixed LZ4_compress_fast_extState_fastReset()
2018-04-11 16:49:40 -07:00
test4973
b183066793
Merge branch 'dev' into lowAddr
2018-04-11 16:45:19 -07:00
W. Felix Handte
056ea63215
Fix Silly Warning (const-ness in declaration has no effect on value types!)
2018-04-11 18:42:09 -04:00
W. Felix Handte
51a56c47c0
Minor Fixes
2018-04-11 18:06:48 -04:00
W. Felix Handte
3a0c571272
Add a LZ4_STATIC_LINKING_ONLY Macro to Guard Experimental APIs
2018-04-11 18:06:10 -04:00
W. Felix Handte
afa52c9b95
Expose dictCtx Functionality in LZ4
2018-04-11 16:28:56 -04:00
W. Felix Handte
21f0c9700b
Rename _extState_noReset -> _extState_fastReset and Edit Comments
2018-04-11 15:13:01 -04:00
W. Felix Handte
c18bff933b
Remove Extraneous Assignment (clearedTable == 0)
2018-04-11 15:12:34 -04:00
W. Felix Handte
59c7d95121
Expose a Faster Stream Reset Function
2018-04-10 13:26:17 -04:00
test4973
cf2f06a6c5
fixed minor conversion warning
...
ptr diff -> U32
2018-04-09 17:08:17 -07:00
test4973
b28abb9f18
Merge branch 'dev' into lowAddr
2018-04-09 16:23:39 -07:00
W. Felix Handte
f88dc90055
Avoid Calling LZ4_prepareTable() in LZ4_compress_fast_continue()
2018-04-09 16:17:33 -04:00
W. Felix Handte
5622c276e1
Return to Allowing Early Returns in LZ4_compress_generic()
...
Or: `goto` Considered Harmful
Or: https://xkcd.com/292/
2018-04-06 19:28:08 -04:00
test4973
f9992fa37f
noticed a bug when re-using hash table
...
./fuzzer -vv -s4217 -t7518
2018-04-05 19:09:24 -07:00
test4973
f4e06e28e6
fixed byPtr mode
...
switch to byU32 when src address is < 64K
note : byPtr is still useful in 32-bits, as it's about ~10% faster
2018-04-05 18:29:42 -07:00
test4973
b4be1e0a74
fixed byPtr match search
2018-04-05 17:52:54 -07:00
test4973
f2a4d6ef37
fixed immediate match search
2018-04-05 17:16:33 -07:00
test4973
64a3e41aca
changed LZ4_compress_generic() logic
...
to use indexes (U32) instead of Ptr.
byPtr is still present.
2018-04-05 16:43:46 -07:00
test4973
6d931b6a93
fixed lz4 compression starting at small address
...
when using byU32 and byU16 modes
2018-04-05 12:40:33 -07:00
Yann Collet
863e24892d
fix comment style
2018-03-21 07:07:24 -07:00
W. Felix Handte
66b6fbfe6f
Restore the Other Old Streaming Functions in a Degraded Fashion
2018-03-14 15:53:10 -04:00
W. Felix Handte
146e676531
Restore LZ4_sizeofStreamState, We Didn't Actually Need to Delete It
2018-03-13 15:42:03 -04:00