aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2008-01-20Fix alignment handling bugs in Subblock encoder.Lasse Collin1-51/+119
This leaves one known alignment bug unfixed: If repeat count doesn't fit into 28-bit integer, the encoder has to split this to multiple Subblocks with Subblock Type `Repeating Data'. The extra Subblocks may have wrong alignment. Correct alignment is restored after the split Repeating Data has been completely written out. Since the encoder doesn't even try to fix the alignment unless the size of Data is at least 4 bytes, to trigger this bug you need at least 4 GiB of repeating data with sequence length of 4 or more bytes. Since the worst thing done by this bug is misaligned data (no data corruption), this bug simply isn't worth fixing, because a proper fix isn't simple.
2008-01-19Implemented LZMA_SYNC_FLUSH support to the Subblock encoder.Lasse Collin2-78/+214
The API for handing Subfilters was changed to make it consistent with LZMA_SYNC_FLUSH. A few sanity checks were added for Subfilter handling. Some small bugs were fixed. More comments were added.
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-18Added the debug directory and the first debug toolLasse Collin5-0/+165
(sync_flush). These tools are not built unless the user runs "make" in the debug directory.
2008-01-18Added test files to test usage of flush marker in LZMA.Lasse Collin5-0/+12
2008-01-18Fix LZMA_SYNC_FLUSH handling in LZ and LZMA encoders.Lasse Collin3-33/+29
That code is now almost completely in LZ coder, where it can be shared with other LZ77-based algorithms in future.
2008-01-18Don't add -g to CFLAGS when --enable-debug is specified.Lasse Collin1-1/+0
It's the job of the user to put that in CFLAGS.
2008-01-18Set stdin and stdout to binary mode on Windows. This patch isLasse Collin1-0/+9
a forward port of b7b22fcb979a16d3a47c8001f058c9f7d4416068 from lzma-utils-legacy.git. I don't know if the new code base builds on Windows, but this is a start.
2008-01-18Added test_compress.sh and bunch of files needed by it.Lasse Collin6-10/+433
This new set of tests compress and decompress several test files with many different compression options. This set of tests will be extended later.
2008-01-17Subblock decoder: Don't exit the main loop in decode_buffer()Lasse Collin1-133/+139
too early if we hit End of Input while decoding a Subblock of type Repeating Data. To keep the loop termination condition elegant, the order of enumerations in coder->sequence were changed. To keep the case-labels in roughly the same order as the enumerations in coder->sequence, large chunks of code was moved around. This made the diff big and ugly compared to the amount of the actual changes made.
2008-01-17Fix wrong too small size of argument unfiltered_maxLasse Collin1-1/+1
in ia64_coder_init(). It triggered assert() in simple_coder.c, and could have caused a buffer overflow. This error was probably a copypaste mistake, since most of the simple filters use unfiltered_max = 4.
2008-01-17Added --delta to the output of "lzma --help".Lasse Collin1-0/+4
2008-01-17Fix Subblock docoder: If Subblock filter was used with knownLasse Collin1-0/+6
Uncompressed Size, and the last output byte was from RLE, the code didn't stop decoding as it should have done.
2008-01-16Tiny non-technical edits to file-format.txt.Lasse Collin1-3/+3
2008-01-16Plugged a memory leak in stream_decoder.c.Lasse Collin1-0/+20
2008-01-16Added memory leak detection to lzmadec.c.Lasse Collin1-0/+3
2008-01-16Added lzma_memlimit_count().Lasse Collin2-0/+29
2008-01-16Added ARRAY_SIZE(array) macro.Lasse Collin1-0/+4
2008-01-16Make Uncompresed Size validation more strictLasse Collin1-1/+2
in alone_decoder.c.
2008-01-15Free the allocated memory in lzmadec if debugging isLasse Collin1-0/+7
enabled. This should make it possible to detect possible memory leaks with Valgrind.
2008-01-15Fix memory leaks from test_block_header.c.Lasse Collin1-2/+17
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 Collin10-47/+746
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-15Fixed assembler detection in configure.ac, and addedLasse Collin1-16/+16
detection for x86_64.
2008-01-15Omit invalid space from printf() format stringLasse Collin1-1/+1
in price_table_gen.c.
2008-01-15Removed a few unused macros from lzma_common.h.Lasse Collin1-6/+2
2008-01-15Fix a typo in lzma_encoder.c.Lasse Collin1-1/+1
2008-01-15Convert bittree_get_price() and bittree_reverse_get_price()Lasse Collin3-55/+56
from macros to inline functions.
2008-01-15Fix CRC code in case --enable-small is used.Lasse Collin5-6/+4
2008-01-15Fix typo in test_index.c.Lasse Collin1-1/+1
2008-01-15Added precomputed range coder probability price table.Lasse Collin7-17/+153
2008-01-14Remove RC_BUFFER_SIZE from lzma_encoder_private.hLasse Collin1-2/+4
and replace it with a sanity check.
2008-01-14Major changes to LZ encoder, LZMA encoder, and range encoder.Lasse Collin4-140/+206
These changes implement support for LZMA_SYNC_FLUSH in LZMA encoder, and move the temporary buffer needed by range encoder from lzma_range_encoder structure to lzma_lz_encoder.
2008-01-14Added one assert() to process.c of the command line tool.Lasse Collin1-0/+1
2008-01-14Don't use coder->lz.stream_end_was_reached in assertionsLasse Collin1-2/+0
in match_c.h.
2008-01-14In lzma_read_match_distances(), don't useLasse Collin1-3/+3
coder->lz.stream_end_was_reached. That variable will be removed, and the check isn't required anyway. Rearrange the check so that it doesn't make one to think that there could be an integer overflow.
2008-01-14Small LZMA_SYNC_FLUSH fixes to Block and Single-Stream encoders.Lasse Collin2-2/+3
2008-01-14More fixes to LZMA decoder's flush marker handling.Lasse Collin1-22/+30
2008-01-10Eliminate lzma_lz_encoder.must_move_pos. It's neededLasse Collin2-8/+2
only in one place which isn't performance criticial.
2008-01-09Define HAVE_ASM_X86 when x86 assembler optimizations areLasse Collin1-1/+4
used. This #define will be useful for inline assembly.
2008-01-09Added good-single-none-empty_3.lzma andLasse Collin3-0/+6
bad-single-none-empty.lzma.
2008-01-08Take advantage of return_if_error() in block_decoder.c.Lasse Collin1-16/+7
2008-01-08Updated tests/files/README.Lasse Collin1-6/+9
2008-01-08Added test files with empty Compressed Data.Lasse Collin4-0/+6
2008-01-08Fix decoding of Blocks that have only Block Header.Lasse Collin1-23/+14
2008-01-08Added good-single-subblock_implicit.lzma.Lasse Collin2-0/+2
2008-01-08Disable CRC32 from Block Headers when --check=noneLasse Collin1-1/+1
has been specified.
2008-01-08Fixed encoding of empty files. Arguments to is_size_valid()Lasse Collin1-1/+1
were in wrong order in block_encoder.c.
2008-01-08Added a few test files.Lasse Collin6-3/+18
2008-01-08Avoid using ! in test_files.sh, because that doesn't workLasse Collin1-1/+3
with some ancient /bin/sh versions.
2008-01-08More pre-C99 inttypes.h compatibility fixes. Now the codeLasse Collin5-29/+6
should work even if the system has no inttypes.h.
2008-01-07Updated fi.po although it's currently pretty much crap.Lasse Collin1-6/+6
2008-01-07Test for $GCC = yes instead of if it is non-empty. ThisLasse Collin1-1/+1
way it is possible to use ac_cv_c_compiler_gnu=no to force configure to think it is using non-GNU C compiler.
2008-01-07Added test_files.sh to tests/Makefile.am so it getsLasse Collin1-1/+1
included in the tarball with "make dist".
2008-01-07Cosmetic edit to test_files.sh.Lasse Collin1-2/+2
2008-01-07Added tests/files/README.Lasse Collin1-0/+108
2008-01-07Tell in COPYING that everything in tests/files isLasse Collin1-1/+2
public domain.
2008-01-07Cleaned up the tests/files directory.Lasse Collin3-0/+0
2008-01-07Added test_files.sh to test decoding of the files inLasse Collin2-1/+43
the tests/files directory. It doesn't test the malicious files yet.
2008-01-07Updated README regarding the assembler optimizations.Lasse Collin1-5/+5
2008-01-07Updated THANKS.Lasse Collin1-0/+1
2008-01-06Cosmetic changes to configure.ac.Lasse Collin1-8/+6
2008-01-06Automatically disable assembler code on Darwin x86.Lasse Collin1-2/+15
Darwin has different ABI than GNU+Linux and Solaris, thus the assembler code doesn't assemble on Darwin.
2008-01-06With printf(), use PRIu64 with a cast to uint64_t insteadLasse Collin2-8/+11
of %zu, because some pre-C99 libc versions don't support %zu.
2008-01-06Introduced compatibility with systems that have pre-C99Lasse Collin13-35/+106
or no inttypes.h. This is useful when the compiler has good enough support for C99, but libc headers don't. Changed liblzma API so that sys/types.h and inttypes.h have to be #included before #including lzma.h. On systems that don't have C99 inttypes.h, it's the problem of the applications to provide the required types and macros before #including lzma.h. If lzma.h defined the missing types and macros, it could conflict with third-party applications whose configure has detected that the types are missing and defined them in config.h already. An alternative would have been introducing lzma_uint32 and similar types, but that would just be an extra pain on modern systems.
2008-01-05Fix typo in comment (INT64_MAX -> UINT64_MAX).Lasse Collin1-1/+1
2008-01-05Rearranged testing of GCC-specific flags.Lasse Collin1-10/+23
2008-01-05Another bug fix for flush marker detection.Lasse Collin1-1/+9
2008-01-04Fix stupid bugs in flush marker detection.Lasse Collin1-3/+4
2008-01-04Added support for flush marker, which will be in filesLasse Collin2-117/+104
that use LZMA_SYNC_FLUSH with encoder (not implemented yet). This is a new feature in the raw LZMA format, which isn't supported by old decoders. This shouldn't be a problem in practice, since lzma_alone_encoder() will not allow LZMA_SYNC_FLUSH, and thus not allow creating files on decodable with old decoders. Made lzma_decoder.c to require tab width of 4 characters if one wants to fit the code in 80 columns. This makes the code easier to read.
2008-01-04Moved range decoder initialization (reading the firstLasse Collin2-63/+66
five input bytes) from LZMA decoder to range decoder header. Did the same for decoding of direct bits.
2007-12-14Added a note to README that --disable-assemblerLasse Collin1-0/+4
must be used on Darwin.
2007-12-14Use the filename suffix .S instead of .s for assembler filesLasse Collin3-2/+2
so that the preprocessor removes the /* */ style comments, which are not supported by some non-GNU assemblers (Solaris) that otherwise work with this code.
2007-12-14Fixed wrong symbol name in crc64_x86.s.Lasse Collin1-1/+1
2007-12-14Use .globl instead of .global in x86 assembler code forLasse Collin2-2/+2
better portability. Still needs fixing the commenting.
2007-12-13Fixed a few short options that take an argument.Lasse Collin1-1/+1
short_opts[] was missing colons to indicate required argument. Thanks to Fabio Pedretti for the bug report.
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 Collin3-80/+12
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-11Get rid of no-NLS gnulib. I don't know how to get itLasse Collin3-11/+5
working with Automake. People who want smaller lzmadec should use --disable-nls on non-GNU systems.
2007-12-11Fixed a typo in tests/Makefile.am which preventedLasse Collin1-1/+1
building the tests if gnulib was needed.
2007-12-11Fixed wrong type of flags_size in Subblock encoder.Lasse Collin1-1/+1
2007-12-10Bumped version number to 4.42.3alpha.Lasse Collin2-2/+2
2007-12-10Disabled some unneeded warnings and made "make dist" work.larhzu/v4.42.2alphaLasse Collin3-32/+33
2007-12-09Added LZMA_SYNC_FLUSH support to the Copy filter.Lasse Collin1-35/+57
2007-12-09Added missing LZMA_API to the C versions of the CRC functions.Lasse Collin2-2/+2
The x86 assembler versions were already OK.
2007-12-09* tests/test_block_header.c (test3): Remove duplicate initializer.Jim Meyering2-2/+1
2007-12-09Take advantage of return_if_error() macro in more places.Lasse Collin7-138/+63
Cleaned Subblock filter's initialization code too.
2007-12-09Added a bunch of .lzma test files.Lasse Collin17-0/+0
2007-12-09Re-enabled the security checks in Subblock decoderLasse Collin1-3/+3
that were disabled for debugging reasons.
2007-12-09Fixed the tests to build with -Werror.Lasse Collin6-12/+12
2007-12-09Imported to git.Lasse Collin240-0/+42513