From 0699fc18a5ea00b9a6d64b0e0ebf33b4723beb10 Mon Sep 17 00:00:00 2001 From: Dmitry Antipov Date: Thu, 6 Sep 2012 11:10:25 +0400 Subject: [PATCH] * alloc.c (mark_object): Revert window marking code since it's unsafe for the Fset_window_configuration. --- src/ChangeLog | 5 +++++ src/alloc.c | 26 +++++++++++--------------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 24d290e163..990cba396e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2012-09-06 Dmitry Antipov + + * alloc.c (mark_object): Revert window marking code + since it's unsafe for the Fset_window_configuration. + 2012-09-05 Paul Eggert Fix race conditions with signal handlers and errno. diff --git a/src/alloc.c b/src/alloc.c index e90cca637d..aca0a82d1b 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -6019,22 +6019,18 @@ mark_object (Lisp_Object arg) case PVEC_WINDOW: { struct window *w = (struct window *) ptr; - bool leaf = NILP (w->hchild) && NILP (w->vchild); - - if (leaf && NILP (w->buffer)) - /* If the window is deleted, mark just the window itself. */ - VECTOR_MARK (ptr); - else + + /* Even if the window is deleted, we can't mark just the window + itself because set-window-configuration can resurrect it. */ + mark_vectorlike (ptr); + /* Mark glyphs for leaf windows. Marking window + matrices is sufficient because frame matrices + use the same glyph memory. */ + if (NILP (w->hchild) && NILP (w->vchild) + && w->current_matrix) { - mark_vectorlike (ptr); - /* Mark glyphs for leaf windows. Marking window - matrices is sufficient because frame matrices - use the same glyph memory. */ - if (leaf && w->current_matrix) - { - mark_glyph_matrix (w->current_matrix); - mark_glyph_matrix (w->desired_matrix); - } + mark_glyph_matrix (w->current_matrix); + mark_glyph_matrix (w->desired_matrix); } } break; -- 2.20.1