2017-11-15 16:51:17 (UTC-02:00)
Marcel Rodrigues <marcelgmr@gmail.com>
Fix initial key size.
diff --git a/gifdec.c b/gifdec.c index 1662957..b9ea72a 100644 --- a/gifdec.c +++ b/gifdec.c @@ -276,8 +276,9 @@ read_image_data(gd_GIF *gif, uint16_t x, uint16_t y, uint16_t w) key_size = (int) byte; clear = 1 << key_size; stop = clear + 1; - init_key_size = key_size + 1; table = new_table(key_size); + key_size++; + init_key_size = key_size; sub_len = shift = 0; key = get_key(gif, key_size, &sub_len, &shift, &byte); /* clear code */ frm_off = 0; @@ -285,7 +286,7 @@ read_image_data(gd_GIF *gif, uint16_t x, uint16_t y, uint16_t w) while (1) { if (key == clear) { key_size = init_key_size; - table->nentries = (1 << key_size) + 2; + table->nentries = (1 << (key_size - 1)) + 2; } else { ret = add_entry(&table, str_len + 1, key, entry.suffix); if (ret == -1) {