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).
This commit is contained in:
YAMAMOTO Mitsuharu 2010-11-21 19:39:42 -05:00 committed by Chong Yidong
parent f102b34567
commit 96ad0af741
2 changed files with 11 additions and 5 deletions

View file

@ -1,3 +1,8 @@
2010-11-22 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* alloc.c (mark_terminals): Ensure that the image cache is marked
even if the terminal object was marked earlier (Bug#6301).
2010-11-21 Chong Yidong <cyd@stupidchicken.com>
* editfns.c (Fbyte_to_string): Signal an error arg is not a byte.

View file

@ -5771,13 +5771,14 @@ mark_terminals (void)
for (t = terminal_list; t; t = t->next_terminal)
{
eassert (t->name != NULL);
if (!VECTOR_MARKED_P (t))
{
#ifdef HAVE_WINDOW_SYSTEM
mark_image_cache (t->image_cache);
/* 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 */
mark_vectorlike ((struct Lisp_Vector *)t);
}
if (!VECTOR_MARKED_P (t))
mark_vectorlike ((struct Lisp_Vector *)t);
}
}