summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2021-11-02 13:11:44 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2021-11-02 13:37:13 +0000
commit811922e7a5c7de1a83a016ce76d0ea009b26d9fa (patch)
treecd857ee21930280b0b6dff86401854f0acd2917a
parente1c7bbf7fa9e762ac406310c62c3e30cde40f998 (diff)
downloadlibnsgif-811922e7a5c7de1a83a016ce76d0ea009b26d9fa.tar.gz
libnsgif-811922e7a5c7de1a83a016ce76d0ea009b26d9fa.tar.bz2
GIF: Postpone initialisation of sprite until required.
-rw-r--r--src/libnsgif.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/libnsgif.c b/src/libnsgif.c
index 3870b15..5f68bcf 100644
--- a/src/libnsgif.c
+++ b/src/libnsgif.c
@@ -996,14 +996,6 @@ gif_internal_decode_frame(gif_animation *gif,
goto gif_decode_frame_exit;
}
- /* Make sure we have a buffer to decode to.
- */
- if (gif_initialise_sprite(gif, gif->width, gif->height)) {
- return GIF_INSUFFICIENT_MEMORY;
- }
-
- /* Decode the flags */
-
return_value = gif__parse_image_descriptor(gif, &gif->frames[frame], false);
if (return_value != GIF_OK) {
return return_value;
@@ -1036,6 +1028,11 @@ gif_internal_decode_frame(gif_animation *gif,
goto gif_decode_frame_exit;
}
+ /* Make sure we have a buffer to decode to. */
+ if (gif_initialise_sprite(gif, gif->width, gif->height)) {
+ return GIF_INSUFFICIENT_MEMORY;
+ }
+
/* Get the frame data */
assert(gif->bitmap_callbacks.bitmap_get_buffer);
frame_data = (void *)gif->bitmap_callbacks.bitmap_get_buffer(gif->frame_image);