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);