void read_huffman_tables(huffman_tables_t* dst, input_func_t* input_func, void* userdata)
{
- size_t len = read_length(input_func, userdata);
+ size_t len = read_uint16(input_func, userdata);
assert(len > 2);
len -= 2;
exit(1);
}
- struct huffman_table* tbl = dst[table_class][table_dest];
+ struct huffman_table* tbl = &((*dst)[table_class][table_dest]);
if (len < 16) {
fprintf(stderr, "Short read for num_codes\n");
exit(1);
for (unsigned elem = prefix_min; elem < prefix_max; ++elem) {
assert(tbl->lookup_table_codes[elem] == DEHUF_SLOW_PATH);
assert(tbl->lookup_table_length[elem] == DEHUF_SLOW_PATH);
- tbl->lookup_table_codes[elem] = k;
+ tbl->lookup_table_codes[elem] = tbl->codes[k];
tbl->lookup_table_length[elem] = length;
}
}