Mercurial > emacs
changeset 76240:f8d6199cdf00
(Fcombine_after_change_execute): Return nil if
combine_after_change_buffer has been invalidated.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Wed, 28 Feb 2007 22:21:25 +0000 |
parents | 05970829819e |
children | e4d076f4d52c |
files | src/insdel.c |
diffstat | 1 files changed, 11 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/insdel.c Wed Feb 28 22:18:37 2007 +0000 +++ b/src/insdel.c Wed Feb 28 22:21:25 2007 +0000 @@ -2351,6 +2351,17 @@ if (NILP (combine_after_change_list)) return Qnil; + /* It is rare for combine_after_change_buffer to be invalid, but + possible. It can happen when combine-after-change-calls is + non-nil, and insertion calls a file handler (e.g. through + lock_file) which scribbles into a temp file -- cyd */ + if (!BUFFERP (combine_after_change_buffer) + || NILP (XBUFFER (combine_after_change_buffer)->name)) + { + combine_after_change_list = Qnil; + return Qnil; + } + record_unwind_protect (Fset_buffer, Fcurrent_buffer ()); Fset_buffer (combine_after_change_buffer);