| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|/
|
|
|
|
|
| |
minor: identical declaration and prototypes of `LZ4HC_compress_optimal()`
also :
very minor optimization of `LZ4_memcpy_using_offset()`
|
|
|
|
|
| |
This is now explicitly documented and asserted.
fix #927
|
|\
| |
| | |
More alignment tests
|
| |
| |
| |
| | |
for better inter-version compatibility
|
| | |
|
| |
| |
| |
| | |
align on `void*` instead : there is no `long long` inside the structure
|
| | |
|
| |
| |
| |
| | |
across lz4.c and lz4hc.c
|
| |
| |
| |
| |
| | |
this it works fine in this environment
(only x86 is suspicious)
|
|\ \
| | |
| | | |
Fix: The "inline" specifier do not use for LZ4_wildCopy8 and LZ4_wildCopy32
|
| | |
| | |
| | |
| | | |
The "static" specifier does not guarantee that the function will be inlined.
|
| | |
| | |
| | |
| | | |
There is no reason to separate these two definitions!
|
| |/
| |
| |
| | |
This problem was reproduced on MSVC 2015 (32-bit). Both functions were called using the operator "call".
|
|/ |
|
|
|
|
| |
fix one (rare & complex) issue discovered by this test
|
| |
|
| |
|
|
|
|
| |
memcpy() on NULL is UB, even if length is 0.
|
| |
|
|\ |
|
| |
| |
| |
| | |
to v1.9.3
|
|/
|
|
|
| |
detected by scan-build, cppcheck and advanved compilation flags
fix #786
|
|\
| |
| | |
fix efficiency of LZ4_compress_HC_destSize()
|
| |
| |
| |
| |
| |
| | |
applying new more accurate formula from LZ4_compress_HC_destSize()
also : fix some minor display issue in tests/frametest
|
| |
| |
| |
| | |
must respect MFLIMIT distance from oend
|
| |
| |
| |
| | |
after truncation of last sequence
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|\ \
| | |
| | | |
fix compressing into NULL
|
| |/
| |
| |
| |
| | |
fails properly
bug discovered by oss-fuzz
|
|/ |
|
|
|
|
| |
following investigation in #859
|
|
|
|
| |
properly track history
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|\ |
|
| |
| |
| |
| |
| | |
Also : added memory-frugal software byte count for big endian 64-bit cpus.
Disabled by default.
|
| |\
| | |
| | | |
rejigger bit counting intrinsics
|
| | |
| | |
| | | |
MSVC debug mode complains
|
| | |
| | |
| | |
| | |
| | | |
Fix lz4/lz4#867
Optimize software fallback routines.
Delete some faulty (and dead?) MSVC big endian code.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
|\ \ \
| |/ / |
|
| |\ \
| | | |
| | | | |
added target lz4-wlib
|
| | |/
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
variant of lz4 linking to liblz4 dynamic library
requires the dynamic library to expose static-only symbols (experimental API)
Example for #888
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
EndMark, the 4-bytes value indicating the end of frame,
must be `0x00000000`.
Previously, it was just mentioned as a `0-size` block.
But such definition could encompass uncompressed blocks of size 0,
with a header of value `0x80000000`.
But the intention was to also support uncompressed empty blocks.
They could be used as a keep-alive signal.
Note that compressed empty blocks are already supported,
it's just that they have a size 1 instead of 0 (for the `0` token).
Unfortunately, the decoder implementation was also wrong,
and would also interpret a `0x80000000` block header as an endMark.
This issue evaded detection so far simply because
this situation never happens, as LZ4Frame always issues
a clean 0x00000000 value as a endMark.
It also does not flush empty blocks.
This is fixed in this PR.
The decoder can now deal with empty uncompressed blocks,
and do not confuse them with EndMark.
The specification is also clarified.
Finally, FrameTest is updated to randomly insert empty blocks during fuzzing.
|
|/
|
| |
* fix issue #783
|
|\ |
|
| | |
|
|\ \
| |/
| | |
fix #832
|
| |
| |
| |
| | |
does no longer rely on default 0-interpretation when __GNUC__ is not defined
|
|\ \
| |/
|/| |
Fix #876
|