aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c26
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;