Yann Collet
dfc431fb3d
fix NULL ptr arithmetic at lz4:2299
2021-05-28 01:10:41 -07:00
Yann Collet
539c783c98
fix NULL ptr arithmetic in lz4:1680
...
only do arithmetic if offset > 0
2021-05-28 01:08:18 -07:00
Yann Collet
59273b7127
fix UB lz4:988 and lz4:1178
...
ensure `dictBase` is only used
when there is an actual dictionary content.
2021-05-28 00:56:26 -07:00
Yann Collet
c2c0c47d5f
fix NULL ptr arithmetic of lz4:1572
...
was blindly adding an offset (0) to `dictionary` which could be `NULL`.
2021-05-27 23:20:28 -07:00
Jasper Lievisse Adriaanse
8301a21773
Fix potential memory corruption with negative memmove() size
2021-02-26 15:21:20 +01:00
Thomas Waldmann
909aae8260
fix some typos (work by Andrea Gelmini)
2021-01-07 18:39:57 +01:00
Yann Collet
50ff8b3ae8
fix minor header date
2020-11-30 18:16:00 -08:00
Yann Collet
e0f85f2fc8
better visual conformance
...
only include <intrin.h> on vs2005+ (#947 )
remove some useless #pragma
fix a few minor Visual warnings
2020-11-14 16:27:57 -08:00
Yann Collet
581c459b4e
restrict BitScanForward() to VS2005+
...
suggested by @aqrit in #947
2020-11-14 14:26:08 -08:00
Yann Collet
a296839802
changed LZ4_calloc() to a 2-arguments signature
...
to remain similar to stdlib's calloc().
Updated test to use c++ compiler for stricter signature check.
2020-11-09 08:44:26 -08:00
Yann Collet
44b13db532
Merge branch 'dev' into customMem
2020-11-08 23:26:19 -08:00
Yann Collet
52646e8d75
first proposal for LZ4_USER_MEMORY_FUNCTIONS
...
makes it possible to replace at link time
malloc, calloc and free
by user-provided functions
which must be named LZ4_malloc(), LZ4_calloc() and LZ4_free().
answer #937
2020-11-08 21:17:32 -08:00
Yann Collet
9cf3f106a8
Merge pull request #944 from lz4/fix874
...
fix #874
2020-11-08 20:48:20 -08:00
Yann Collet
2a2b10f192
fixed remaining ubsan warnings
2020-11-08 18:08:43 -08:00
Yann Collet
2964b8a6f6
fix #874
...
coverity reported a warning regarding a memcpy() overwrite.
This is a false positive (the memory area is large enough),
but it's true that it's not trivial to determine (encompassing struct),
and it's proper anyway to only memcpy() just the right amount of data.
2020-11-08 13:21:58 -08:00
Yann Collet
e251a84025
fix minor UBs
...
- check alignment before casting a pointer
- saveDict : don't memmove() on NULL dst
2020-11-07 19:42:57 -08:00
Yann Collet
1d02141bf8
Merge pull request #941 from lz4/revertinline
...
Revert "Replace "static" to "LZ4_FORCE_INLINE" for small functions"
2020-11-07 17:18:04 -08:00
Yann Collet
f61eeb7793
Revert "Replace "static" to "LZ4_FORCE_INLINE" for small functions"
...
This reverts commit 0e3933edd4
.
2020-11-07 11:02:30 -08:00
Yann Collet
d4bfcf8489
fix #935
...
minor: identical declaration and prototypes of `LZ4HC_compress_optimal()`
also :
very minor optimization of `LZ4_memcpy_using_offset()`
2020-11-07 10:06:52 -08:00
Yann Collet
b5e2a4acd9
Merge pull request #936 from lz4/alignTest
...
More alignment tests
2020-11-06 20:27:42 -08:00
Yann Collet
211d653ff8
re-enable alignment test on all targets
2020-11-06 16:43:14 -08:00
Yann Collet
e968a24129
unified alignment test
...
across lz4.c and lz4hc.c
2020-11-06 14:46:48 -08:00
remittor
0e3933edd4
Replace "static" to "LZ4_FORCE_INLINE" for small functions
...
The "static" specifier does not guarantee that the function will be inlined.
2020-10-07 09:52:40 +03:00
remittor
749bd91a06
Replace define LZ4_FORCE_O2_INLINE_GCC_PPC64LE to LZ4_FORCE_INLINE
...
There is no reason to separate these two definitions!
2020-10-07 09:51:08 +03:00
remittor
c4792cdfa9
Fix: The "inline" specifier do not use for LZ4_wildCopy8 and LZ4_wildCopy32
...
This problem was reproduced on MSVC 2015 (32-bit). Both functions were called using the operator "call".
2020-10-06 17:16:43 +03:00
Yann Collet
7d21f761c3
fix conversion warning
2020-09-29 21:53:42 -07:00
Yann Collet
ad2d2764c7
fix minor static analyzer warnings
...
detected by scan-build, cppcheck and advanved compilation flags
fix #786
2020-09-29 17:20:52 -07:00
Yann Collet
78f4fdbb89
Merge pull request #923 from lz4/fix784
...
fix efficiency of LZ4_compress_HC_destSize()
2020-09-28 14:04:56 -07:00
Yann Collet
ab89dda91d
improved last literals run on LZ4_compress_destSize
...
applying new more accurate formula from LZ4_compress_HC_destSize()
also : fix some minor display issue in tests/frametest
2020-09-28 11:39:00 -07:00
Yann Collet
89736e4e27
ensure last match not too close to end
...
must respect MFLIMIT distance from oend
2020-09-27 23:59:56 -07:00
Yann Collet
8a362a8ac8
Merge pull request #921 from lz4/doubleNull
...
fix compressing into NULL
2020-09-27 21:09:06 -07:00
Yann Collet
e7fe105ac6
fix efficiency of LZ4_compress_HC_destSize()
...
LZ4_compress_HC_destSize() had a tendency
to discard its last match when this match overflowed specified dstBuffer limit.
The impact is generally moderate,
but occasionally huge,
typically when this last match is very large
(such as compressing a bunch of zeroes).
Issue #784 fixed for both Chain and Opt implementations.
Added a unit test suggested by @remittor checking this topic.
2020-09-27 21:04:40 -07:00
Anton Kochkov
9730d91110
Fix compilation with TinyCC
2020-09-27 17:07:51 +08:00
Yann Collet
ee4f37d284
fix compressing into NULL
...
fails properly
bug discovered by oss-fuzz
2020-09-26 11:31:57 -07:00
Yann Collet
10d2e1c694
fixed lz4frame with blocks of size 1
...
properly track history
2020-09-17 14:43:02 -07:00
Yann Collet
ee01df1271
added the actual code change
2020-09-16 23:46:39 -07:00
Yann Collet
c5d6f8a8be
fix #783
...
LZ4_decompress_safe_partial()
now also supports a scenario where
nb_bytes_to_generate is <= block_decompressed_size
And
nb_bytes_to_read is >= block_compressed_size.
Previously, the only supported scenario was
nb_bytes_to_read == block_compress_size.
Pay attention that,
if nb_bytes_to_read is > block_compressed_size,
then, necessarily, it requires that
nb_bytes_to_generate is <= block_decompress_size.
If both are larger, it will generate corrupted data.
2020-08-27 00:17:57 -07:00
Yann Collet
3e3a006c6f
Merge branch 'dev' into extraInput
2020-08-26 23:20:28 -07:00
Yann Collet
5243173b23
added documentation about LZ4_FORCE_SW_BITCOUNT
...
Also : added memory-frugal software byte count for big endian 64-bit cpus.
Disabled by default.
2020-08-25 22:17:29 -07:00
Yann Collet
ee0a3cfa0c
Merge pull request #898 from aqrit/aqrit-prefixlen
...
rejigger bit counting intrinsics
2020-08-24 15:13:18 -07:00
Yann Collet
0002563be8
removed LZ4_compress_fast_force()
...
which serves no more purpose.
The comment implies that the simple presence of this unused function was affecting performance,
and that's the reason why it was not removed earlier.
This is likely another side effect of instruction alignment.
It's obviously unreliable to rely on it in this way,
meaning that the impact will be different, positive of negative,
with any minor code change, and any minor compiler version change, even parameter change.
2020-08-21 19:23:49 -07:00
aqrit
e45defa8bd
silence warning
...
MSVC debug mode complains
2020-08-17 17:53:07 -04:00
BellaXlp
ab713923a2
fix issue #783 ( #862 )
...
* fix issue #783
2020-08-12 14:42:10 -07:00
aqrit
e72897402d
rejigger bit counting intrinsics
...
Fix lz4/lz4#867
Optimize software fallback routines.
Delete some faulty (and dead?) MSVC big endian code.
2020-08-11 21:14:09 -04:00
Yann Collet
b26c140a54
Merge pull request #895 from lz4/hugefast
...
Fix #876
2020-08-10 12:52:32 -07:00
Yann Collet
7b1b078dfc
fix #876
...
by introducing a max limit acceleration value
2020-08-10 11:03:27 -07:00
W. Felix Handte
a78235e6ad
Fix Enum Casts
...
Fixes `-Wsign-compare` issues.
2020-08-10 13:47:08 -04:00
W. Felix Handte
9af86f0841
Remove dirty Field From LZ4_stream_t
2020-08-06 16:06:40 -04:00
W. Felix Handte
d7399232a4
Remove Extraneous Reset in LZ4_attach_dictionary()
...
Nothing internally sets dirty anymore. The only way to get that is if you use
an uninitialized context, in which case your warranty is void anyways.
2020-08-05 12:46:32 -04:00
Nick Terrell
fe2a1b3707
Call LZ4_memcpy() instead of memcpy()
...
`LZ4_memcpy()` uses `__builtin_memcpy()` to ensure that clang/gcc
can inline the `memcpy()` calls in freestanding mode.
This is necessary for decompressing the Linux Kernel with LZ4.
Without an analogous patch decompression ran at 77 MB/s, and with
the patch it ran at 884 MB/s.
2020-08-03 11:28:02 -07:00