]> wimlib.net Git - wimlib/blobdiff - src/decompress.c
Add kind-of-working LZMS decompression using cabinet.dll API
[wimlib] / src / decompress.c
index cc01ba449a9305a787119664273ffdcb9bce8a83..502ca47d69f4935fa95b41b9218bc53248c64bda 100644 (file)
@@ -28,6 +28,7 @@
 #endif
 
 #include "wimlib/decompress.h"
+#include "wimlib/error.h"
 #include "wimlib/util.h"
 
 #include <string.h>
@@ -53,7 +54,8 @@
  * @decode_table:      The array in which to create the fast huffman decoding
  *                     table.  It must have a length of at least
  *                     (2**table_bits) + 2 * num_syms to guarantee
- *                     that there is enough space.
+ *                     that there is enough space.  Also must be 16-byte
+ *                     aligned (at least when USE_SSE2_FILL gets defined).
  *
  * @num_syms:          Number of symbols in the alphabet, including symbols
  *                     that do not appear in this particular input chunk.
@@ -147,7 +149,7 @@ make_huffman_decode_table(u16 *decode_table,  unsigned num_syms,
                left <<= 1;
                left -= len_counts[len];
                if (unlikely(left < 0)) { /* over-subscribed */
-                       ERROR("Invalid Huffman code (over-subscribed)");
+                       DEBUG("Invalid Huffman code (over-subscribed)");
                        return -1;
                }
        }
@@ -159,7 +161,7 @@ make_huffman_decode_table(u16 *decode_table,  unsigned num_syms,
                               table_num_entries * sizeof(decode_table[0]));
                        return 0;
                } else {
-                       ERROR("Invalid Huffman code (incomplete set)");
+                       DEBUG("Invalid Huffman code (incomplete set)");
                        return -1;
                }
        }
@@ -416,10 +418,8 @@ read_huffsym_near_end_of_input(struct input_bitstream *istream,
        if (sym >= num_syms) {
                bitstream_remove_bits(istream, key_size);
                do {
-                       if (bitsleft == 0) {
-                               ERROR("Input stream exhausted");
+                       if (bitsleft == 0)
                                return -1;
-                       }
                        key_bits = sym + bitstream_peek_bits(istream, 1);
                        bitstream_remove_bits(istream, 1);
                        bitsleft--;