From: Dmitry Antipov Date: Thu, 6 Sep 2012 07:10:25 +0000 (+0400) Subject: * alloc.c (mark_object): Revert window marking code X-Git-Tag: emacs-24.2.90~404 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0699fc18a5ea00b9a6d64b0e0ebf33b4723beb10;p=emacs.git * alloc.c (mark_object): Revert window marking code since it's unsafe for the Fset_window_configuration. --- diff --git a/src/ChangeLog b/src/ChangeLog index 24d290e163d..990cba396e3 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 e90cca637df..aca0a82d1b5 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;