diff options
| author | YAMAMOTO Mitsuharu | 2010-11-21 19:39:42 -0500 |
|---|---|---|
| committer | Chong Yidong | 2010-11-21 19:39:42 -0500 |
| commit | 96ad0af7411d61d6ae3e7afcab1b3996dd0ef1d4 (patch) | |
| tree | 39cc1bb7d2bf61088111a776c76129f08564d989 /src/alloc.c | |
| parent | f102b34567441421ca647afff52943a225f8062a (diff) | |
| download | emacs-96ad0af7411d61d6ae3e7afcab1b3996dd0ef1d4.tar.gz emacs-96ad0af7411d61d6ae3e7afcab1b3996dd0ef1d4.zip | |
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).
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/alloc.c b/src/alloc.c index da63fe0f82b..4d19d3ac479 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -5771,13 +5771,14 @@ mark_terminals (void) | |||
| 5771 | for (t = terminal_list; t; t = t->next_terminal) | 5771 | for (t = terminal_list; t; t = t->next_terminal) |
| 5772 | { | 5772 | { |
| 5773 | eassert (t->name != NULL); | 5773 | eassert (t->name != NULL); |
| 5774 | if (!VECTOR_MARKED_P (t)) | ||
| 5775 | { | ||
| 5776 | #ifdef HAVE_WINDOW_SYSTEM | 5774 | #ifdef HAVE_WINDOW_SYSTEM |
| 5777 | mark_image_cache (t->image_cache); | 5775 | /* If a terminal object is reachable from a stacpro'ed object, |
| 5776 | it might have been marked already. Make sure the image cache | ||
| 5777 | gets marked. */ | ||
| 5778 | mark_image_cache (t->image_cache); | ||
| 5778 | #endif /* HAVE_WINDOW_SYSTEM */ | 5779 | #endif /* HAVE_WINDOW_SYSTEM */ |
| 5779 | mark_vectorlike ((struct Lisp_Vector *)t); | 5780 | if (!VECTOR_MARKED_P (t)) |
| 5780 | } | 5781 | mark_vectorlike ((struct Lisp_Vector *)t); |
| 5781 | } | 5782 | } |
| 5782 | } | 5783 | } |
| 5783 | 5784 | ||