Release resources in gif_load on errors

* src/image.c (webp_load): Clean up code slightly.
(gif_load): Really release resources on GIF parsing errors.
This commit is contained in:
Lars Ingebrigtsen 2022-04-12 13:17:14 +02:00
parent 3de2462da7
commit 25a28ed4f7

View file

@ -9249,11 +9249,13 @@ gif_load (struct frame *f, struct image *img)
return true;
gif_error:
if (!cache)
if (pixmap)
xfree (pixmap);
gif_close (gif, NULL);
if (cache)
{
if (pixmap)
xfree (pixmap);
gif_close (gif, NULL);
cache->handle = NULL;
cache->temp = NULL;
}
return false;
}
@ -9501,9 +9503,6 @@ webp_load (struct frame *f, struct image *img)
if (features.has_animation)
{
/* Animated image. */
WebPData webp_data;
webp_data.bytes = contents;
webp_data.size = size;
int timestamp;
struct anim_cache* cache = anim_get_animation_cache (img->spec);
@ -9524,6 +9523,10 @@ webp_load (struct frame *f, struct image *img)
if (cache->handle)
WebPAnimDecoderDelete (cache->handle);
WebPData webp_data;
webp_data.bytes = contents;
webp_data.size = size;
/* Get the width/height of the total image. */
WebPDemuxer* demux = WebPDemux (&webp_data);
cache->width = width = WebPDemuxGetI (demux, WEBP_FF_CANVAS_WIDTH);