emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r109898: * alloc.c (mark_object): Rev


From: Dmitry Antipov
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r109898: * alloc.c (mark_object): Revert window marking code
Date: Thu, 06 Sep 2012 11:10:25 +0400
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 109898
committer: Dmitry Antipov <address@hidden>
branch nick: trunk
timestamp: Thu 2012-09-06 11:10:25 +0400
message:
  * alloc.c (mark_object): Revert window marking code
  since it's unsafe for the Fset_window_configuration.
modified:
  src/ChangeLog
  src/alloc.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2012-09-05 21:33:53 +0000
+++ b/src/ChangeLog     2012-09-06 07:10:25 +0000
@@ -1,3 +1,8 @@
+2012-09-06  Dmitry Antipov  <address@hidden>
+
+       * alloc.c (mark_object): Revert window marking code
+       since it's unsafe for the Fset_window_configuration.
+
 2012-09-05  Paul Eggert  <address@hidden>
 
        Fix race conditions with signal handlers and errno.

=== modified file 'src/alloc.c'
--- a/src/alloc.c       2012-09-05 15:34:45 +0000
+++ b/src/alloc.c       2012-09-06 07:10:25 +0000
@@ -6019,22 +6019,18 @@
          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;


reply via email to

[Prev in Thread] Current Thread [Next in Thread]