aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChong Yidong2011-02-27 17:57:22 -0500
committerChong Yidong2011-02-27 17:57:22 -0500
commit52eb77a6ad5df5980bc8c6d7ad7ee802feb8add3 (patch)
tree693ac55d628a03992954b52a96630f348a425703 /src
parentb923f7a98fed9177f6f61a3aafb0ddbeb60abdad (diff)
downloademacs-52eb77a6ad5df5980bc8c6d7ad7ee802feb8add3.tar.gz
emacs-52eb77a6ad5df5980bc8c6d7ad7ee802feb8add3.zip
Avoid recording dead buffers in buffer-list frame param (Bug#7898).
* src/frame.c (store_frame_param): Don't store value directly in buffer_list and buried_buffer_list; copy the list and remove dead buffers.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog6
-rw-r--r--src/frame.c14
2 files changed, 17 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index a7c9d4c7e3c..0e5e295a622 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
12011-02-27 Chong Yidong <cyd@stupidchicken.com>
2
3 * frame.c (store_frame_param): Don't store value directly in
4 buffer_list and buried_buffer_list; copy the list and remove dead
5 buffers (Bug#7898).
6
12011-02-27 Eli Zaretskii <eliz@gnu.org> 72011-02-27 Eli Zaretskii <eliz@gnu.org>
2 8
3 * msdos.c (readlink) [DJGPP < 2.04]: New stub function. 9 * msdos.c (readlink) [DJGPP < 2.04]: New stub function.
diff --git a/src/frame.c b/src/frame.c
index 3a6900a572a..05938f3e1f0 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -2208,15 +2208,23 @@ store_frame_param (struct frame *f, Lisp_Object prop, Lisp_Object val)
2208 register Lisp_Object old_alist_elt; 2208 register Lisp_Object old_alist_elt;
2209 2209
2210 /* The buffer-list parameters are stored in a special place and not 2210 /* The buffer-list parameters are stored in a special place and not
2211 in the alist. */ 2211 in the alist. All buffers must be live. */
2212 if (EQ (prop, Qbuffer_list)) 2212 if (EQ (prop, Qbuffer_list))
2213 { 2213 {
2214 f->buffer_list = val; 2214 Lisp_Object list = Qnil;
2215 for (; CONSP (val); val = XCDR (val))
2216 if (!NILP (Fbuffer_live_p (XCAR (val))))
2217 list = Fcons (XCAR (val), list);
2218 f->buffer_list = Fnreverse (list);
2215 return; 2219 return;
2216 } 2220 }
2217 if (EQ (prop, Qburied_buffer_list)) 2221 if (EQ (prop, Qburied_buffer_list))
2218 { 2222 {
2219 f->buried_buffer_list = val; 2223 Lisp_Object list = Qnil;
2224 for (; CONSP (val); val = XCDR (val))
2225 if (!NILP (Fbuffer_live_p (XCAR (val))))
2226 list = Fcons (XCAR (val), list);
2227 f->buried_buffer_list = Fnreverse (list);
2220 return; 2228 return;
2221 } 2229 }
2222 2230