X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fdecompress_common.c;fp=src%2Fdecompress_common.c;h=ee85bc96719c8ae582a60c5897881763c52d0577;hp=767527d94bec63b53088e145da8ef98c6d17a860;hb=63be24f6367f907c49d3bc1d6ac86311bd0cba68;hpb=869ca1f4cc4654501d52f8c3e660c056904ccabf diff --git a/src/decompress_common.c b/src/decompress_common.c index 767527d9..ee85bc96 100644 --- a/src/decompress_common.c +++ b/src/decompress_common.c @@ -387,46 +387,3 @@ make_huffman_decode_table(u16 *decode_table, unsigned num_syms, } 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; -}