diff options
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/src/alloc.c b/src/alloc.c index e90cca637df..aca0a82d1b5 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -6019,22 +6019,18 @@ mark_object (Lisp_Object arg) | |||
| 6019 | case PVEC_WINDOW: | 6019 | case PVEC_WINDOW: |
| 6020 | { | 6020 | { |
| 6021 | struct window *w = (struct window *) ptr; | 6021 | struct window *w = (struct window *) ptr; |
| 6022 | bool leaf = NILP (w->hchild) && NILP (w->vchild); | 6022 | |
| 6023 | 6023 | /* Even if the window is deleted, we can't mark just the window | |
| 6024 | if (leaf && NILP (w->buffer)) | 6024 | itself because set-window-configuration can resurrect it. */ |
| 6025 | /* If the window is deleted, mark just the window itself. */ | 6025 | mark_vectorlike (ptr); |
| 6026 | VECTOR_MARK (ptr); | 6026 | /* Mark glyphs for leaf windows. Marking window |
| 6027 | else | 6027 | matrices is sufficient because frame matrices |
| 6028 | use the same glyph memory. */ | ||
| 6029 | if (NILP (w->hchild) && NILP (w->vchild) | ||
| 6030 | && w->current_matrix) | ||
| 6028 | { | 6031 | { |
| 6029 | mark_vectorlike (ptr); | 6032 | mark_glyph_matrix (w->current_matrix); |
| 6030 | /* Mark glyphs for leaf windows. Marking window | 6033 | mark_glyph_matrix (w->desired_matrix); |
| 6031 | matrices is sufficient because frame matrices | ||
| 6032 | use the same glyph memory. */ | ||
| 6033 | if (leaf && w->current_matrix) | ||
| 6034 | { | ||
| 6035 | mark_glyph_matrix (w->current_matrix); | ||
| 6036 | mark_glyph_matrix (w->desired_matrix); | ||
| 6037 | } | ||
| 6038 | } | 6034 | } |
| 6039 | } | 6035 | } |
| 6040 | break; | 6036 | break; |