From: Chong Yidong Date: Wed, 28 Feb 2007 22:21:25 +0000 (+0000) Subject: (Fcombine_after_change_execute): Return nil if X-Git-Tag: emacs-pretest-22.0.95~24 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c47a9ed17aa599b4248ef15aec7326546104beee;p=emacs.git (Fcombine_after_change_execute): Return nil if combine_after_change_buffer has been invalidated. --- 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);