aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorDmitry Antipov2012-09-06 11:10:25 +0400
committerDmitry Antipov2012-09-06 11:10:25 +0400
commit0699fc18a5ea00b9a6d64b0e0ebf33b4723beb10 (patch)
treefb192a64f6e7adde325ed2aa7296051e9ec16d37 /src/alloc.c
parent4fd78b62d1c815e4dfd7ffe4e7862ef4c4fceaca (diff)
downloademacs-0699fc18a5ea00b9a6d64b0e0ebf33b4723beb10.tar.gz
emacs-0699fc18a5ea00b9a6d64b0e0ebf33b4723beb10.zip
* alloc.c (mark_object): Revert window marking code
since it's unsafe for the Fset_window_configuration.
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;