aboutsummaryrefslogtreecommitdiff
path: root/src/liblzma/common (follow)
AgeCommit message (Collapse)AuthorFilesLines
2009-04-28Fixed a crash in liblzma.Lasse Collin11-13/+13
liblzma tries to avoid useless free()/malloc() pairs in initialization when multiple files are handled using the same lzma_stream. This didn't work with filter chains due to comparison of wrong pointers in lzma_next_coder_init(), making liblzma think that no memory reallocation is needed even when it actually is. Easy way to trigger this bug is to decompress two files with a single xz command. The first file should have e.g. x86+LZMA2 as the filter chain, and the second file just LZMA2.
2009-04-13Put the interesting parts of XZ Utils into the public domain.Lasse Collin53-524/+159
Some minor documentation cleanups were made at the same time.
2009-02-18Added files missing from the previous commit.Lasse Collin1-1/+6
2009-02-17Added lzma_easy_buffer_encode(). Splitted easy.c into smallLasse Collin6-47/+175
pieces to avoid unneeded dependencies making statically linked applications bigger than needed.
2009-02-13Changed how the version number is specified in various places.Lasse Collin1-1/+1
Now configure.ac will get the version number directly from src/liblzma/api/lzma/version.h. The intent is to reduce the number of places where the version number is duplicated. In future, support for displaying Git commit ID may be added too.
2009-02-07Introduced LZMA_API_STATIC macro, which the applicationsLasse Collin1-1/+1
need to #define when linking against static liblzma on platforms like Windows. Most developers don't need to care about LZMA_API_STATIC at all.
2009-02-02Modify LZMA_API macro so that it works on Windows withLasse Collin34-80/+80
other compilers than MinGW. This may hurt readability of the API headers slightly, but I don't know any better way to do this.
2009-02-01Fix a bug in lzma_block_buffer_decode(), although thisLasse Collin1-4/+4
function should be rewritten anyway.
2009-02-01Added initial version of raw buffer-to-buffer codingLasse Collin3-0/+157
functions, and cleaned up filter.h API header a little. May be very buggy, not tested yet.
2009-02-01Use __cdecl also for function pointers in liblzma API whenLasse Collin1-11/+7
on Windows.
2009-01-31Add LZMA_API to liblzma API headers. It's useful at leastLasse Collin1-2/+11
on Windows. sysdefs.h no longer #includes lzma.h, so lzma.h has to be #included separately where needed.
2009-01-28Fix uninitialized variables in alone_decoder.c. This bug wasLasse Collin1-0/+2
triggered by the previous commit, since these variables were not used by anything before support for a preset dictionary.
2009-01-26Add lzma_block_buffer_decode().Lasse Collin2-0/+88
2009-01-26Add more sanity checks to lzma_stream_buffer_decode().Lasse Collin1-0/+7
2009-01-26Avoid hardcoded constant in easy.c.Lasse Collin1-1/+1
2009-01-26Tiny bit better sanity check in block_util.cLasse Collin1-1/+1
2009-01-25Fix a dumb bug in Block decoder, which made it returnLasse Collin1-3/+3
LZMA_DATA_ERROR with valid data. The bug was added in e114502b2bc371e4a45449832cb69be036360722.
2009-01-23Added lzma_stream_buffer_decode() and made minor cleanups.Lasse Collin2-0/+92
2009-01-22Fix a comment.Lasse Collin1-1/+1
2009-01-20Add some single-call buffer-to-buffer coding functions.Lasse Collin5-20/+567
2009-01-20Block encoder cleanupsLasse Collin2-21/+32
2009-01-20Use LZMA_PROG_ERROR in lzma_code() as documented in base.h.Lasse Collin1-16/+8
2009-01-19Fix handling of non-fatal errors in lzma_code().Lasse Collin1-1/+8
2009-01-17Beta was supposed to be API stable but I had forgot to renameLasse Collin6-9/+9
lzma_memlimit_encoder and lzma_memlimit_decoder to lzma_raw_encoder_memlimit and lzma_raw_decoder_memlimit. :-( Now it is fixed. Hopefully it doesn't cause too much trouble to those who already thought API is stable.
2008-12-31Remove lzma_init() and other init functions from liblzma API.Lasse Collin5-113/+1
Half of developers were already forgetting to use these functions, which could have caused total breakage in some future liblzma version or even now if --enable-small was used. Now liblzma uses pthread_once() to do the initializations unless it has been built with --disable-threads which make these initializations thread-unsafe. When --enable-small isn't used, liblzma currently gets needlessly linked against libpthread (on systems that have it). While it is stupid for now, liblzma will need threads in future anyway, so this stupidity will be temporary only. When --enable-small is used, different code CRC32 and CRC64 is now used than without --enable-small. This made the resulting binary slightly smaller, but the main reason was to clean it up and to handle the lack of lzma_init_check(). The pkg-config file lzma.pc was renamed to liblzma.pc. I'm not sure if it works correctly and portably for static linking (Libs.private includes -pthread or other operating system specific flags). Hopefully someone complains if it is bad. lzma_rc_prices[] is now included as a precomputed array even with --enable-small. It's just 128 bytes now that it uses uint8_t instead of uint32_t. Smaller array seemed to be at least as fast as the more bloated uint32_t array on x86; hopefully it's not bad on other architectures.
2008-12-27Bunch of liblzma tweaks, including some API changes.Lasse Collin17-163/+150
The API and ABI should now be very close to stable, although the code behind it isn't yet.
2008-12-18Updated Makefile.am that was missing from the previous commit.Lasse Collin1-1/+0
2008-12-17Remove the alignment functions for now. Maybe they willLasse Collin1-114/+0
be added back in some form later, but the current version wasn't modular, so it would need fixing anyway.
2008-12-15Fix a dumb bug in .lzma decoder which was introduced inLasse Collin1-15/+14
the previous commit. (Probably the previous commit has other bugs too, it wasn't tested.)
2008-12-15Bunch of liblzma API cleanups and fixes.Lasse Collin10-64/+270
2008-12-01Validate the filter chain before checking filter-specificLasse Collin1-4/+10
memory usage.
2008-12-01Added the changes for Delta filter that should have beenLasse Collin2-2/+2
part of 656ec87882ee74b192c4ea4a233a235eca7b04d4.
2008-11-25Remove the nowadays unneeded memory limitting malloc() wrapper.Lasse Collin2-289/+0
2008-11-23VLI encoder and decoder cleanups. Made encoder returnLasse Collin2-13/+33
LZMA_PROG_ERROR in single-call mode if there's no output space.
2008-11-19Oh well, big messy commit again. Some highlights:Lasse Collin14-331/+348
- Updated to the latest, probably final file format version. - Command line tool reworked to not use threads anymore. Threading will probably go into liblzma anyway. - Memory usage limit is now about 30 % for uncompression and about 90 % for compression. - Progress indicator with --verbose - Simplified --help and full --long-help - Upgraded to the last LGPLv2.1+ getopt_long from gnulib. - Some bug fixes
2008-09-30Fixed Stream decoder to actually use the first_stream variable.Lasse Collin1-0/+5
2008-09-30Fixed uninitialized variable in Stream decoder.Lasse Collin1-0/+1
2008-09-27Fix conflicting Subblock helper filter's ID.Lasse Collin1-1/+1
2008-09-27Changed magic bytes to match the updated spec. FilenameLasse Collin2-3/+3
suffix wasn't changed yet.
2008-09-27Some API changes, bug fixes, cleanups etc.Lasse Collin9-30/+33
2008-09-13Renamed constants:Lasse Collin23-97/+94
- LZMA_VLI_VALUE_MAX -> LZMA_VLI_MAX - LZMA_VLI_VALUE_UNKNOWN -> LZMA_VLI_UNKNOWN - LZMA_HEADER_ERRRO -> LZMA_OPTIONS_ERROR
2008-09-12Improved the Stream Flags handling API.Lasse Collin6-14/+43
2008-09-11Remove a check from Block encoder that should have alreadyLasse Collin1-5/+0
been removed in 2ba01bfa755e47ff6af84a978e3c8d63d7d2775e.
2008-09-11Remove bogus #includes.Lasse Collin4-36/+0
2008-09-10Check for LZMA_FILTER_RESERVED_START in filter_flags_encoder.c.larhzu/v4.999.5alphaLasse Collin1-3/+4
Use LZMA_PROG_ERROR instead of LZMA_HEADER_ERROR if the Filter ID is in the reserved range. This allows Block Header encoder to detect unallowed Filter IDs, which is good for Stream encoder.
2008-09-10Filter handling cleanupsLasse Collin5-120/+54
2008-09-10CommentsLasse Collin1-1/+5
2008-09-10Cleaned up Block encoder and moved the no longer sharedLasse Collin4-97/+66
code from block_private.h to block_decoder.c. Now the Block encoder doesn't need compressed_size and uncompressed_size from lzma_block structure to be initialized.
2008-09-06Some API cleanupsLasse Collin5-34/+42
2008-09-04Don't allow LZMA_SYNC_FLUSH with decoders anymore. There'sLasse Collin3-3/+2
simply nothing that would use it. Allow LZMA_FINISH to the decoders, which will usually ignore it (auto decoder and Stream decoder being exceptions).
2008-09-02Auto decoder cleanupLasse Collin1-1/+1
2008-09-02Updated auto decoder to handle LZMA_CONCATENATED when decodingLasse Collin1-16/+71
LZMA_Alone files. Decoding of concatenated LZMA_Alone files is intentionally not supported, so it is better to put this in auto decoder than LZMA_Alone decoder.
2008-09-02Stream decoder cleanupsLasse Collin1-25/+32
2008-08-28Sort of garbage collection commit. :-| Many things are stillLasse Collin54-1900/+1583
broken. API has changed a lot and it will still change a little more here and there. The command line tool doesn't have all the required changes to reflect the API changes, so it's easy to get "internal error" or trigger assertions.
2008-06-18Update the code to mostly match the new simpler file formatLasse Collin54-5315/+2944
specification. Simplify things by removing most of the support for known uncompressed size in most places. There are some miscellaneous changes here and there too. The API of liblzma has got many changes and still some more will be done soon. While most of the code has been updated, some things are not fixed (the command line tool will choke with invalid filter chain, if nothing else). Subblock filter is somewhat broken for now. It will be updated once the encoded format of the Subblock filter has been decided.
2008-05-11Remove support for pre-C89 libc versions that lack memcpy,Lasse Collin1-1/+1
memmove, and memset.
2008-04-28Fixed wrong spelling "limitter" to "limiter". This affectsLasse Collin2-2/+2
liblzma's API.
2008-04-25Removed src/liblzma/common/sysdefs.h symlink, which wasLasse Collin3-3/+1
annoying, because "make dist" put two copies of sysdefs.h into the tarball instead of the symlink.
2008-04-24Fix a memory leak by calling free(extra->data) inLasse Collin1-0/+1
lzma_extra_free().
2008-03-10Don't fill allocated memory with 0xFD when debugging isLasse Collin1-3/+4
enabled. It hides errors from Valgrind.
2008-02-01Do uncompressed size validation in raw encoder. This wayLasse Collin1-17/+73
it gets done for not only raw encoder, but also Block and LZMA_Alone encoders.
2008-02-01Avoid unneeded function call in raw_common.c.Lasse Collin1-9/+11
2008-01-25Combine lzma_options_block validation needed by both BlockLasse Collin3-48/+71
encoder and decoder, and put the shared things to block_private.h. Improved the checks a little so that they may detect too big Compressed Size at initialization time if lzma_options_block.total_size or .total_limit is known. Allow encoding and decoding Blocks with combinations of fields that are not allowed by the file format specification. Doing this requires that the application passes such a combination in lzma_options_lzma; liblzma doesn't do that, but it's not impossible that someone could find them useful in some custom file format.
2008-01-25Improved the memory limitter:Lasse Collin1-14/+83
- Added lzma_memlimit_max() and lzma_memlimit_reached() API functions. - Added simple estimation of malloc()'s memory usage overhead. - Fixed integer overflow detection in lzma_memlimit_alloc(). - Made some white space cleanups and added more comments. The description of lzma_memlimit_max() in memlimit.h is bad and should be improved.
2008-01-23Fix decoding of empty Metadata Blocks, that don't haveLasse Collin1-1/+3
even the Metadata Flags field. Earlier the code allowed such files; now they are prohibited as the file format specification requires.
2008-01-23Fix a bug related to 99e12af4e2b866c011fe0106cd1e0bfdcc8fe9c6.Lasse Collin1-6/+7
lzma_metadata.header_metadata_size was not properly set to zero if the Metadata had only the Metadata Flags field.
2008-01-23Fix decoding of Extra Records that have empty Data.Lasse Collin1-1/+12
2008-01-23Add the trailing '\0' to lzma_extra.data as the API headerLasse Collin1-1/+3
already documents.
2008-01-23Return LZMA_STREAM_END instead of LZMA_OK ifLasse Collin1-1/+5
LZMA_SYNC_FLUSH or LZMA_FULL_FLUSH is used when there's no unfinished Block open.
2008-01-23Fix Size of Header Metadata Block handling. NowLasse Collin3-15/+15
lzma_metadata.header_metadata_size == LZMA_VLI_VALUE_UNKNOWN is not allowed at all. To indicate missing Header Metadata Block, header_metadata_size must be set to zero. This is what Metadata decoder does after this patch too. Note that other missing fields in lzma_metadata are still indicated with LZMA_VLI_VALUE_UNKNOWN. This isn't as illogical as it sounds at first, because missing Size of Header Metadata Block means that Header Metadata Block is not present in the Stream. With other Metadata fields, a missing field means only that the value is unknown.
2008-01-23Fix a memory leak in metadata_decoder.c.Lasse Collin1-0/+1
2008-01-23Fix the fix 863028cb7ad6d8d0455fa69348f56b376d7b908f whichLasse Collin1-1/+4
just moved to problem. Now it's really fixed.
2008-01-23Take advantage of return_if_error() macro inLasse Collin1-16/+8
lzma_info_metadata_set() in info.c.
2008-01-23Fixed a dangling pointer that caused invalid free().Lasse Collin1-0/+1
2008-01-22Added lzma_easy_* functions. These should make usingLasse Collin7-2/+254
liblzma as easy as using zlib, because the easy API don't require developers to know any fancy LZMA options. Note that Multi-Block Stream encoding is currently broken. The easy API should be OK, the bug(s) are elsewhere.
2008-01-22Fix Multi-Block Stream encoder's EOPM usage.Lasse Collin1-1/+1
2008-01-22Made lzma_extra pointers const in lzma_options_stream.Lasse Collin1-2/+6
2008-01-19Revised the Delta filter implementation. The initializationLasse Collin10-200/+363
function is still shared between encoder and decoder, but the actual coding is in separate files for encoder and decoder. There are now separate functions for the actual delta calculation depending on if Delta is the last filter in the chain or not. If it is the last, the new code copies the data from input to output buffer and does the delta calculation at the same time. The old code first copied the data, then did the delta in the target buffer, which required reading through the data twice. Support for LZMA_SYNC_FLUSH was added to the Delta encoder. This doesn't change anything in the file format.
2008-01-16Plugged a memory leak in stream_decoder.c.Lasse Collin1-0/+20
2008-01-16Added lzma_memlimit_count().Lasse Collin1-0/+19
2008-01-16Make Uncompresed Size validation more strictLasse Collin1-1/+2
in alone_decoder.c.
2008-01-15Use fastpos.h when encoding LZMA dictionary size inLasse Collin1-21/+19
Filter Flags encoder.
2008-01-15Revised the fastpos code. It now uses the slightly fasterLasse Collin1-3/+0
table-based version from LZMA SDK 4.57. This should be fast on most systems. A simpler and smaller alternative version is also provided. On some CPUs this can be even a little faster than the default table-based version (see comments in fastpos.h), but on most systems the table-based code is faster.
2008-01-15Added bsr.h.Lasse Collin2-0/+62
2008-01-15Fix CRC code in case --enable-small is used.Lasse Collin2-4/+0
2008-01-15Added precomputed range coder probability price table.Lasse Collin1-2/+3
2008-01-14Small LZMA_SYNC_FLUSH fixes to Block and Single-Stream encoders.Lasse Collin2-2/+3
2008-01-08Take advantage of return_if_error() in block_decoder.c.Lasse Collin1-16/+7
2008-01-08Fix decoding of Blocks that have only Block Header.Lasse Collin1-23/+14
2008-01-08Fixed encoding of empty files. Arguments to is_size_valid()Lasse Collin1-1/+1
were in wrong order in block_encoder.c.
2007-12-11Removed uncompressed size tracking from Delta encoder too.Lasse Collin1-18/+3
2007-12-11Remove uncompressed size tracking from the filter encoders.Lasse Collin1-23/+2
It's not strictly needed there, and just complicates the code. LZ encoder never even had this feature. The primary reason to have uncompressed size tracking in filter encoders was validating that the application doesn't give different amount of input that it had promised. A side effect was to validate internal workings of liblzma. Uncompressed size tracking is still present in the Block encoder. Maybe it should be added to LZMA_Alone and raw encoders too. It's simpler to have one coder just to validate the uncompressed size instead of having it in every filter.
2007-12-09Added LZMA_SYNC_FLUSH support to the Copy filter.Lasse Collin1-35/+57
2007-12-09Take advantage of return_if_error() macro in more places.Lasse Collin5-84/+39
Cleaned Subblock filter's initialization code too.
2007-12-09Imported to git.Lasse Collin56-0/+8851