diff options
Diffstat (limited to 'src/libnsgif.c')
-rw-r--r-- | src/libnsgif.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/libnsgif.c b/src/libnsgif.c index 5fa9cb6..24dbf7d 100644 --- a/src/libnsgif.c +++ b/src/libnsgif.c @@ -554,6 +554,8 @@ static gif_result gif_error_from_lzw(lzw_result l_res) [LZW_BAD_ICODE] = GIF_FRAME_DATA_ERROR, [LZW_BAD_CODE] = GIF_FRAME_DATA_ERROR, }; + assert(l_res != LZW_BAD_PARAM); + assert(l_res != LZW_NO_COLOUR); return g_res[l_res]; } @@ -643,9 +645,8 @@ gif__decode_complex(gif_animation *gif, lzw_result res; /* Initialise the LZW decoding */ - res = lzw_decode_init(gif->lzw_ctx, gif->gif_data, - gif->buffer_size, gif->buffer_position, - minimum_code_size); + res = lzw_decode_init(gif->lzw_ctx, minimum_code_size, + gif->gif_data, gif->buffer_size, gif->buffer_position); if (res != LZW_OK) { return gif_error_from_lzw(res); } @@ -680,7 +681,7 @@ gif__decode_complex(gif_animation *gif, } break; } - res = lzw_decode_continuous(gif->lzw_ctx, + res = lzw_decode(gif->lzw_ctx, &uncompressed, &available); } @@ -715,23 +716,22 @@ gif__decode_simple(gif_animation *gif, gif_result ret = GIF_OK; lzw_result res; + transparency_index = gif->frames[frame].transparency ? + gif->frames[frame].transparency_index : + GIF_NO_TRANSPARENCY; + /* Initialise the LZW decoding */ - res = lzw_decode_init(gif->lzw_ctx, gif->gif_data, - gif->buffer_size, gif->buffer_position, - minimum_code_size); + res = lzw_decode_init_map(gif->lzw_ctx, + minimum_code_size, transparency_index, colour_table, + gif->gif_data, gif->buffer_size, gif->buffer_position); if (res != LZW_OK) { return gif_error_from_lzw(res); } - transparency_index = gif->frames[frame].transparency ? - gif->frames[frame].transparency_index : - GIF_NO_TRANSPARENCY; - frame_data += (offset_y * gif->width); while (pixels > 0) { - res = lzw_decode_map_continuous(gif->lzw_ctx, - transparency_index, colour_table, + res = lzw_decode_map(gif->lzw_ctx, frame_data, pixels, &written); pixels -= written; frame_data += written; |