1
0
mirror of https://github.com/lz4/lz4.git synced 2026-10-24 01:48:57 +03:00

28 Commits

Author SHA1 Message Date
Yann Collet
d9c9fe23a2 lz4frame: explicit reserved fields ; LZ4F_srcStableUntilFlush includes LZ4F_srcStable (checkpoint)
Prototype, not intended for a PR as is.

- LZ4F_preferences_t : reserved array replaced by explicit scalar fields
  (nbWorkers, reserved1, reserved0), and LZ4F_compressOptions_t likewise
  (stableSrc, reserved2, reserved1, reserved0), as LZ4F_decompressOptions_t.
  Same sizes and offsets (ABI unchanged). A future field takes the place of a
  reserved one, without changing positional initializers.
  One-time source change : the former positional form { ..., { 0, 0, 0 } }
  no longer compiles in C++ (warnings in C) ; examples/frameCompress.c updated.
  LZ4F_INIT_PREFERENCES : { LZ4F_INIT_FRAMEINFO, 0, 0u, 0u, 0u, 0u, 0u }.
- LZ4F_srcStableUntilFlush (2) is stronger than LZ4F_srcStable (1) : in addition
  to the last 64 KB of input (which remain, including after LZ4F_flush()),
  all of src remains until LZ4F_flush() / LZ4F_compressEnd() returns
  (with autoFlush : until the invocation returns). Docs only : the code already
  relied on this (history read in place after a flush, single-threaded path).
- tests/frameMT.c : validateFlushContract : one buffer, 2 invocations separated by
  a flush, everything but the last 64 KB scrambled after the flush with content
  resembling upcoming data ; nbWorkers 0 and 2, levels 1 and 9, with and without
  autoFlush. Scrambling the last 64 KB too is detected (contentChecksum_invalid).
  Streaming test : LZ4F_srcStableUntilFlush slices come from a working copy,
  scrambled the same way after each flush.

Output unchanged (same digests). Validated : full tests MT / no-MT, ASAN+UBSAN, TSAN,
make test, wine, examples (C, C++), cxxtest, CLI == dev CLI.
2026-10-22 04:26:50 -07:00
Alb3e3
72852fcea2 examples: cast division denominators to double
The macOS CI job builds the examples with

    CFLAGS="-O3 -Werror -Wconversion -Wno-sign-conversion" make test

and clang's -Wconversion implies -Wimplicit-int-float-conversion.  In each of
these ratio expressions the numerator is cast explicitly but the denominator is
left to convert implicitly, so newer clang rejects them:

    frameCompress.c:446:40: error: implicit conversion from
        'const unsigned long long' to 'double' may lose precision
        [-Werror,-Wimplicit-int-float-conversion]
      446 |             (double)ret.size_out / ret.size_in * 100);
          |                                  ~ ~~~~^~~~~~~

Cast the denominators too, matching how fileCompress.c:193 already writes the
same computation.  The conversion happened anyway via the usual arithmetic
conversions, so the printed values are unchanged.

frameCompress.c is only the first failure; make stops there, and
bench_functions.c has ten more instances of the same pattern behind it.
2026-10-07 14:47:53 -07:00
Alexander Mohr
5c7382798e review: Fix review findings
This commit fixes the review findings

Signed-off-by: Alexander Mohr <alexander.m.mohr@mercedes-benz.com>
2022-06-10 06:37:57 +00:00
Alexander Mohr
4aeb5020c3 frame-api: add method to insert uncomressed data
new method `uncompressed_update` allows to insert blocks without
compression into the lz4 stream.
The usage is documented in the frameCompress example

Signed-off-by: Alexander Mohr <alexander.m.mohr@mercedes-benz.com>
2022-06-09 17:08:01 +02:00
Dimitri Papadopoulos
4bdfb08b95 Fix typos found by codespell 2021-11-25 15:32:37 +01:00
a1346054
eb23590d13 fix spelling 2021-08-21 20:50:38 +00:00
Yann Collet
28964f4bea fixed #778
fixed assert() when divisor == 0
2019-08-21 13:44:24 +02:00
Yann Collet
b2215f2a89 tried to clean another bunch of cppcheck warnings
so "funny" thing with cppcheck
is that no 2 versions give the same list of warnings.

On Mac, I'm using v1.81, which had all warnings fixed.
On Travis CI, it's v1.61, and it complains about a dozen more/different things.
On Linux, it's v1.72, and it finds a completely different list of a half dozen warnings.

Some of these seems to be bugs/limitations in cppcheck itself.
The TravisCI version v1.61 seems unable to understand %zu correctly, and seems to assume it means %u.
2018-09-19 12:12:49 -07:00
Yann Collet
86023f01f2 avoid final trailing comma for enum lists
as detected in #485 by @JoachimSchneider.

Refactored the c_standards tests
so that these issues get automatically detected in CI tests.
2018-09-13 14:29:41 -07:00
Yann Collet
858b6ad7f3 frameCompress : added an error detection case
check for potential input data not consumed.
2018-09-05 16:45:46 -07:00
Yann Collet
0d1ced5b0c Merge branch 'dev' into lz4f_init 2018-09-05 16:43:46 -07:00
Yann Collet
b2e56d82bf Introduced constants LZ4F_INIT_*
to simplify initialization of lz4frame.h structures.
Partially in response to #546.
2018-09-05 16:06:37 -07:00
Cedric De Brito
98c0c7cf9d Fix bug in frame decompress example
The decompression was failing as the srcEnd pointer in
decompress_file_internal was wrongly computed beyond
the end of the memory block.
We need to account for the fact that the header ("info")
was already read in the calling function ("alreadyConsumed").
2018-07-02 14:35:04 +02:00
Yann Collet
0fb3a3b199 fixed a number of minor cast warnings 2018-04-26 18:08:28 -07:00
Yann Collet
3ce289bcce modified decompression part of frameCompress.c
using same logic as prior modifications for compression part.
2018-02-01 02:48:20 -08:00
Yann Collet
25efdd80c5 refactored ressource allocation to avoid goto 2018-02-01 01:38:14 -08:00
Yann Collet
b515ae9c99 refactored frameCompress.c example code
compression function returns a struct.
Also : nested structure ressources->computation
to make it easier to manage multiple exit points.
2018-01-31 16:39:37 -08:00
Yann Collet
ff3c67fdb2 fixed read size, as noticed by @terrelln 2018-01-31 16:13:02 -08:00
Yann Collet
87fb7a1d03 refactored frameCompress example
to better reflect LZ4F API usage.
2018-01-31 14:33:16 -08:00
Yann Collet
6c94c94d46 minor updates to examples
see 810e2ca27b (commitcomment-25810887)
2017-11-24 17:18:46 -08:00
Markus Hennecke
2ff723b9ae Fix: Add return statement to main function 2017-08-24 14:31:45 +02:00
Yann Collet
77f99d2922 restored block checksum capability at lz4frame API level 2017-08-11 17:46:52 -07:00
Yann Collet
1d1737aaf2 fixed frameCompress example 2017-08-09 12:29:38 -07:00
Yann Collet
8875e7dbb5 fix minor analyzer warning 2016-11-21 16:42:23 -08:00
Yann Collet
ba7a85b463 fixed minor analyzer warning 2016-11-21 15:44:25 -08:00
Nick Terrell
7aad356ffd Add frame decompression example 2016-11-11 11:37:12 -08:00
Yann Collet
7273da38ba minor example clarification 2015-06-28 02:34:12 -08:00
Zbigniew Jędrzejewski-Szmek
386d216cdf Add example which uses the frame api through the library 2015-06-17 23:45:15 -04:00