From: Lars Ingebrigtsen Date: Tue, 12 Apr 2022 11:17:14 +0000 (+0200) Subject: Release resources in gif_load on errors X-Git-Tag: emacs-29.0.90~1931^2~635 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=25a28ed4f7419154cd89b83a2ed907585db0de2b;p=emacs.git 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. --- diff --git a/src/image.c b/src/image.c index 3b3d1fc080a..f56d02bf198 100644 --- a/src/image.c +++ b/src/image.c @@ -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);