]> git.eshelyaron.com Git - emacs.git/commitdiff
Release resources in gif_load on errors
authorLars Ingebrigtsen <larsi@gnus.org>
Tue, 12 Apr 2022 11:17:14 +0000 (13:17 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Tue, 12 Apr 2022 11:17:14 +0000 (13:17 +0200)
* src/image.c (webp_load): Clean up code slightly.
(gif_load): Really release resources on GIF parsing errors.

src/image.c

index 3b3d1fc080a3b70a920cd5826a4f441c46a90fb7..f56d02bf1984d7599e852262d5fa0b4fd15028d9 100644 (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);