lz4/lib
Yann Collet 6ad3a983db fix #369
The bug would make the bt search read one byte in an invalid memory region,
and make a branch decision based on its value.
Impact was small (missed compression opportunity).
It only happens in -BD mode, with extDict-prefix overlapping matches.

The bt match search is supposed to work also in extDict mode.
In which case, the match ptr can point into Dict.
When the match was overlapping Dict<->Prefix,
match[matchLength] would end up outside of Dict, in an invalid memory area.
The correction ensures that in such a case,
match[matchLength] ends up at intended location, inside prefix.
2017-06-26 11:29:05 -07:00
..
dll updated README.md 2016-11-22 11:14:11 +01:00
.gitignore lz4 version source from lz4.h 2016-09-02 22:04:16 -07:00
liblz4.pc.in lz4 version source from lz4.h 2016-09-02 22:04:16 -07:00
LICENSE added a few dates 2016-11-21 15:51:39 -08:00
lz4.c fix #369 2017-06-26 11:29:05 -07:00
lz4.h bumped version number to 1.8.0 2017-05-10 13:27:18 -07:00
lz4frame_static.h added test for LZ4F_resetDecompressionContext() 2017-05-10 16:28:36 -07:00
lz4frame.c Fix gcc7 Wimplicit-fallthrough warnings 2017-06-19 13:57:35 +08:00
lz4frame.h clarified lz4frame api comment (#350) 2017-06-13 12:35:00 -07:00
lz4hc.c Fix gcc7 Wimplicit-fallthrough warnings 2017-06-19 13:57:35 +08:00
lz4hc.h updated NEWS 2017-06-12 10:54:59 -07:00
lz4opt.h fix #369 2017-06-26 11:29:05 -07:00
Makefile updated Makefile 2017-05-10 13:26:04 -07:00
README.md updated README.md 2016-11-22 11:14:11 +01:00
xxhash.c updated xxhash lib 2016-11-10 18:34:49 -08:00
xxhash.h updated xxhash lib 2016-11-10 18:34:49 -08:00

LZ4 - Library Files

The directory contains many files, but depending on project's objectives, not all of them are necessary.

Minimal LZ4 build

The minimum required is lz4.c and lz4.h, which will provide the fast compression and decompression algorithm.

The High Compression variant of LZ4

For more compression at the cost of compression speed, the High Compression variant lz4hc is available. It's necessary to add lz4hc.c and lz4hc.h. The variant still depends on regular lz4 source files. In particular, the decompression is still provided by lz4.c.

Compatibility issues

In order to produce files or streams compatible with lz4 command line utility, it's necessary to encode lz4-compressed blocks using the official interoperable frame format. This format is generated and decoded automatically by the lz4frame library. In order to work properly, lz4frame needs lz4 and lz4hc, and also xxhash, which provides error detection. (Advanced stuff : It's possible to hide xxhash symbols into a local namespace. This is what liblz4 does, to avoid symbol duplication in case a user program would link to several libraries containing xxhash symbols.)

Advanced API

A more complex lz4frame_static.h is also provided. It contains definitions which are not guaranteed to remain stable within future versions. It must be used with static linking only.

Using MinGW+MSYS to create DLL

DLL can be created using MinGW+MSYS with the make liblz4 command. This command creates dll\liblz4.dll and the import library dll\liblz4.lib. The import library is only required with Visual C++. The header files lz4.h, lz4hc.h, lz4frame.h and the dynamic library dll\liblz4.dll are required to compile a project using gcc/MinGW. The dynamic library has to be added to linking options. It means that if a project that uses LZ4 consists of a single test-dll.c file it should be linked with dll\liblz4.dll. For example:

    gcc $(CFLAGS) -Iinclude/ test-dll.c -o test-dll dll\liblz4.dll

The compiled executable will require LZ4 DLL which is available at dll\liblz4.dll.

Miscellaneous

Other files present in the directory are not source code. There are :

  • LICENSE : contains the BSD license text
  • Makefile : script to compile or install lz4 library (static or dynamic)
  • liblz4.pc.in : for pkg-config (make install)
  • README.md : this file

License

All source material within lib directory are BSD 2-Clause licensed. See LICENSE for details. The license is also repeated at the top of each source file.