changeset 111372:0792cbcb42ed

Fix the fix for Bug#6426 (Bug#7210), avoiding frame garbaging loop. * image.c (free_image): Don't garbage the frame here, since this function can be called while redisplaying (Bug#7210). (uncache_image): Garbage the frame here (Bug#6426).
author Chong Yidong <cyd@stupidchicken.com>
date Fri, 05 Nov 2010 14:28:19 -0400
parents b5db40499098
children 45e5b5974ddb
files src/ChangeLog src/image.c
diffstat 2 files changed, 12 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Thu Nov 04 16:34:49 2010 -0400
+++ b/src/ChangeLog	Fri Nov 05 14:28:19 2010 -0400
@@ -1,3 +1,9 @@
+2010-11-05  Chong Yidong  <cyd@stupidchicken.com>
+
+	* image.c (free_image): Don't garbage the frame here, since this
+	function can be called while redisplaying (Bug#7210).
+	(uncache_image): Garbage the frame here (Bug#6426).
+
 2010-11-04  Chong Yidong  <cyd@stupidchicken.com>
 
 	* process.c (Fmake_network_process): Don't apply Bug#5173 fix for
--- a/src/image.c	Thu Nov 04 16:34:49 2010 -0400
+++ b/src/image.c	Fri Nov 05 14:28:19 2010 -0400
@@ -1094,10 +1094,6 @@
       /* Free resources, then free IMG.  */
       img->type->free (f, img);
       xfree (img);
-
-      /* As display glyphs may still be referring to the image ID, we
-	 must garbage the frame (Bug#6426).  */
-      SET_FRAME_GARBAGED (f);
     }
 }
 
@@ -1544,7 +1540,12 @@
 {
   struct image *img = search_image_cache (f, spec, sxhash (spec, 0));
   if (img)
-    free_image (f, img);
+    {
+      free_image (f, img);
+      /* As display glyphs may still be referring to the image ID, we
+	 must garbage the frame (Bug#6426).  */
+      SET_FRAME_GARBAGED (f);
+    }
 }