diff options
author | Chong Yidong <cyd@stupidchicken.com> | 2007-02-28 22:21:25 +0000 |
---|---|---|
committer | Chong Yidong <cyd@stupidchicken.com> | 2007-02-28 22:21:25 +0000 |
commit | c47a9ed17aa599b4248ef15aec7326546104beee (patch) | |
tree | 70e0b767ac6cb1b6e88c770df142d14bb27d2e0f /src/insdel.c | |
parent | f79b31dba08765d0f4c1412191802e36e5bfdf6e (diff) | |
download | emacs-c47a9ed17aa599b4248ef15aec7326546104beee.tar.gz |
(Fcombine_after_change_execute): Return nil if
combine_after_change_buffer has been invalidated.
Diffstat (limited to 'src/insdel.c')
-rw-r--r-- | src/insdel.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/insdel.c b/src/insdel.c index 08043147cdf..7f15f7de52d 100644 --- a/src/insdel.c +++ b/src/insdel.c @@ -2351,6 +2351,17 @@ DEFUN ("combine-after-change-execute", Fcombine_after_change_execute, 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); |