diff src/alloc.c @ 111758:0813efd37bf9

Fix image cache marking bug (Bug#6301). * src/alloc.c (mark_terminals): Ensure that the image cache is marked even if the terminal object was marked earlier (Bug#6301).
author Chong Yidong <cyd@stupidchicken.com>
date Sun, 21 Nov 2010 19:39:42 -0500
parents d14945d39811
children 141d3f14d8c3 376148b31b5e
line wrap: on
line diff
--- a/src/alloc.c	Sun Nov 21 14:03:51 2010 -0500
+++ b/src/alloc.c	Sun Nov 21 19:39:42 2010 -0500
@@ -5771,13 +5771,14 @@
   for (t = terminal_list; t; t = t->next_terminal)
     {
       eassert (t->name != NULL);
+#ifdef HAVE_WINDOW_SYSTEM
+      /* If a terminal object is reachable from a stacpro'ed object,
+	 it might have been marked already.  Make sure the image cache
+	 gets marked.  */
+      mark_image_cache (t->image_cache);
+#endif /* HAVE_WINDOW_SYSTEM */
       if (!VECTOR_MARKED_P (t))
-	{
-#ifdef HAVE_WINDOW_SYSTEM
-	  mark_image_cache (t->image_cache);
-#endif /* HAVE_WINDOW_SYSTEM */
-	  mark_vectorlike ((struct Lisp_Vector *)t);
-	}
+	mark_vectorlike ((struct Lisp_Vector *)t);
     }
 }