Timofey Solomko
d8c22c55da
[Deflate][Huffman] Filter out zero code lengths only during code construction
...
This should prevent crashes described in issue #57 .
2026-03-01 20:35:21 +08:00
Timofey Solomko
7e6a9fd42c
[Deflate] Add a check for correct number of literal/length codes
2026-03-01 20:35:21 +08:00
Timofey Solomko
a39011a00b
[Deflate] Fix potential crashes in cases of too large copy amount
...
In a dynamic Huffman block if either previous or zero code length is copied too many times, it could cause a crash or lead to inconsistent state. These situations are checked now.
2026-03-01 20:35:21 +08:00
Timofey Solomko
ccf97c995b
[Deflate] Check that 16 is not the first code length symbol
...
This symbol in the dynamic Huffman block encodes copy of the previous code length. If this symbol is the first, then there is nothing to copy. Previously, this could cause a crash.
2026-02-28 01:26:43 +08:00
Timofey Solomko
b743b0b7ed
[Deflate] Optimize decoding of code lengths for dynamic trees
2026-02-26 00:53:17 +08:00
Timofey Solomko
a0c64f7f9c
[Deflate] Optimize creation of uncompressed blocks
2026-02-23 18:08:26 +08:00
Timofey Solomko
273b6ed9e9
Remove redundant imports
2026-02-18 12:21:57 +08:00
Timofey Solomko
5b5b20f582
[Huffman] Remove codes argument label from EncodingTree.init
2026-02-18 00:12:55 +08:00
Timofey Solomko
ce1736a2b0
[Huffman] Add HuffmanCodes typealias for clarity
2026-02-18 00:10:29 +08:00
Timofey Solomko
ea9aaccfb9
Update copyright year to 2026
2026-01-31 15:30:24 +08:00
Timofey Solomko
ed66991cbd
Update copyright year to 2024
2024-01-11 16:57:04 +03:00
Timofey Solomko
43132fc39d
Update copyright year to 2023
2023-02-07 15:31:45 +02:00
Timofey Solomko
78459b710a
[Deflate] Fix incorrect truncation check when processing uncompressed blocks
2022-09-23 19:45:45 +03:00
Timofey Solomko
2b47fb7f49
[Deflate] Replace computation of static tree codes from lenghts with precomputed codes
2022-05-21 23:00:36 +03:00
Timofey Solomko
e500dfc5d9
[Deflate] Add guards against truncated inputs
2022-05-20 21:46:57 +03:00
Timofey Solomko
79295db930
Update copyright year to 2022
2022-01-08 15:02:59 +03:00
Timofey Solomko
a47431f86d
[Deflate] Don't use match index as a cycling index
...
This was the cause of incorrect results in some rare cases.
2021-10-24 15:03:53 +03:00
Timofey Solomko
f64c5264f8
[LZ4] Remove extra TODOs
2021-10-22 22:43:50 +03:00
Timofey Solomko
de7864c6db
[Deflate] Replace crc32 of a match with bytes contacenated into UInt32
...
Previously, we were using crc32 to identify matches when doing compression. This not only was an overkill computationally (the new version has boosted the compression speed), but it could also lead to incorrect results in some rare cases (potentially, only theoretical situtations) due to collisions of crc32 algorithm.
2021-10-21 22:30:23 +03:00
Timofey Solomko
da8f4f7f5c
[Deflate] Rename some variables in lengthEncode
2021-10-18 18:35:06 +03:00
Timofey Solomko
268aaaa356
[Deflate] Use start/endIndex instead of count property of data input
2021-10-18 18:31:40 +03:00
Timofey Solomko
113972bcce
[Deflate] Reduce nesting in lengthEncode
...
This should be a purely refactoring change with no effect on performance or functionality.
2021-10-18 18:30:15 +03:00
Timofey Solomko
e83f23effa
Update copyright year to 2021
2021-01-11 11:20:57 +02:00
Timofey Solomko
31ec1f1553
Update copyright year to 2020
2020-01-01 19:06:33 +03:00
Timofey Solomko
35a93815b3
Replace usage of deprecated index(...) functions with the new ones
2019-05-01 19:39:41 +03:00
Timofey Solomko
db82490ed8
Replace the usage of the deprecated Data(bytes:) initializer
2019-05-01 19:30:48 +03:00
Timofey Solomko
c93a783d21
[docs] Fix grammar issues with regards to a/the/null articles, while/during, and extra commas
2019-03-13 12:27:08 +03:00
Timofey Solomko
04f64bcb72
Rename Encoding/DecodingHuffmanTree to just Encoding/DecodingTree
2019-03-12 22:31:35 +03:00
Timofey Solomko
142fd44dd2
Remove old CodeLength initializer from Encoding(Huffman)Tree
2019-03-12 22:31:24 +03:00
Timofey Solomko
250c9fbd4c
Remove old CodeLength initializer from Decoding(Huffman)Tree
2019-03-12 22:31:13 +03:00
Timofey Solomko
1df768c09f
Move the lengths bootstrapping function into the namespace of the CodeLength
2019-03-12 22:29:53 +03:00
Timofey Solomko
7f25dbf6e7
Rename HuffmanLength to CodeLength
2019-03-12 22:28:01 +03:00
Timofey Solomko
ce47019097
Update copyright year to 2019
2019-01-02 23:15:43 +03:00
Timofey Solomko
1c5ca3bbe5
Swiflinted before 4.4.0
2018-08-07 21:18:39 +03:00
Timofey Solomko
44f33bf02a
Make bit reader and writer functions' parameters concrete classes
...
Previously, it was almost always protocols, which in some cases didn't make sense.
2018-01-07 22:27:36 +03:00
Timofey Solomko
e714dc308b
Updated copyright year to 2018
2018-01-03 19:44:18 +03:00
Timofey Solomko
e986561487
Replace Int() conversions with toInt() functions
2018-01-03 19:22:15 +03:00
Timofey Solomko
c8d92e56d3
Replace BitReader and ByteReader with BitByteData's implementations
2018-01-03 19:22:15 +03:00
Timofey Solomko
bb39c4016c
Replace SWCompression.BitWriter with BitByteData's one
2018-01-03 19:22:15 +03:00
Timofey Solomko
cef8ab12a2
Rename BitWriter.finish() to align
2018-01-03 19:22:13 +03:00
Timofey Solomko
15c06843b1
Replace BitWriter.buffer with Data
2018-01-03 19:22:13 +03:00
Timofey Solomko
d7bb712031
Return Data instead of bytes array in Deflate.encodeHuffmanBlock
2017-12-24 14:49:32 +03:00
Timofey Solomko
d63d2977fb
Only reverse bit order of codes in EncHuffmanTree if necessary
...
And it is necessary only for Deflate. This will allow us to remove bitOrder argument of BitWriter.write, which has very unclear semantics
2017-12-21 15:24:54 +03:00
Timofey Solomko
dcfde952f2
Don't convert Data to UInt8 array in Deflate compression
2017-11-22 22:15:02 +03:00
Timofey Solomko
8aced32379
Extract function for calculating Deflate's static huffman block size
2017-11-19 20:05:45 +03:00
Timofey Solomko
545e5c69fc
Remove some redundancy from documentation
2017-11-14 21:35:30 +03:00
Timofey Solomko
feb41deed1
Return Data instead of UInt8 arrays in internal decompress functions
2017-11-11 12:54:31 +03:00
Timofey Solomko
843896edcf
Move source code files into subfolders
2017-10-06 23:10:01 +03:00