login

<     >

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) {