]> wimlib.net Git - wimlib/blobdiff - src/decompress_common.c
LZX, XPRESS decompression: Return 0 bits on overrun
[wimlib] / src / decompress_common.c
index 767527d94bec63b53088e145da8ef98c6d17a860..ee85bc96719c8ae582a60c5897881763c52d0577 100644 (file)
@@ -387,46 +387,3 @@ make_huffman_decode_table(u16 *decode_table,  unsigned num_syms,
        }
        return 0;
 }
        }
        return 0;
 }
-
-/* Reads a Huffman-encoded symbol from the bistream when the number of remaining
- * bits is less than the maximum codeword length. */
-int
-read_huffsym_near_end_of_input(struct input_bitstream *istream,
-                              const u16 decode_table[],
-                              const u8 lens[],
-                              unsigned num_syms,
-                              unsigned table_bits,
-                              unsigned *n)
-{
-       unsigned bitsleft = istream->bitsleft;
-       unsigned key_size;
-       u16 sym;
-       u16 key_bits;
-
-       if (table_bits > bitsleft) {
-               key_size = bitsleft;
-               bitsleft = 0;
-               key_bits = bitstream_peek_bits(istream, key_size) <<
-                                               (table_bits - key_size);
-       } else {
-               key_size = table_bits;
-               bitsleft -= table_bits;
-               key_bits = bitstream_peek_bits(istream, table_bits);
-       }
-
-       sym = decode_table[key_bits];
-       if (sym >= num_syms) {
-               bitstream_remove_bits(istream, key_size);
-               do {
-                       if (bitsleft == 0)
-                               return -1;
-                       key_bits = sym + bitstream_peek_bits(istream, 1);
-                       bitstream_remove_bits(istream, 1);
-                       bitsleft--;
-               } while ((sym = decode_table[key_bits]) >= num_syms);
-       } else {
-               bitstream_remove_bits(istream, lens[sym]);
-       }
-       *n = sym;
-       return 0;
-}