changeset 71640:5cdc253a3479

* insdel.c (prepare_to_modify_buffer): For an indirect buffer, do clash detection using the base buffer.
author Chong Yidong <cyd@stupidchicken.com>
date Wed, 05 Jul 2006 16:05:02 +0000
parents c97bd29593d6
children 6edfaf0b0ec6
files src/ChangeLog src/insdel.c
diffstat 2 files changed, 17 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Wed Jul 05 15:12:41 2006 +0000
+++ b/src/ChangeLog	Wed Jul 05 16:05:02 2006 +0000
@@ -1,5 +1,8 @@
 2006-07-05  Chong Yidong  <cyd@stupidchicken.com>
 
+	* insdel.c (prepare_to_modify_buffer): For an indirect buffer, do
+	clash detection using the base buffer.
+
 	* puresize.h (BASE_PURESIZE): Increment to 1210500.
 
 2006-07-04  Kim F. Storm  <storm@cua.dk>
--- a/src/insdel.c	Wed Jul 05 15:12:41 2006 +0000
+++ b/src/insdel.c	Wed Jul 05 16:05:02 2006 +0000
@@ -2031,6 +2031,8 @@
      int start, end;
      int *preserve_ptr;
 {
+  struct buffer *base_buffer;
+
   if (!NILP (current_buffer->read_only))
     Fbarf_if_buffer_read_only ();
 
@@ -2056,20 +2058,26 @@
 	verify_interval_modification (current_buffer, start, end);
     }
 
+  /* For indirect buffers, use the base buffer to check clashes.  */
+  if (current_buffer->base_buffer != 0)
+    base_buffer = current_buffer->base_buffer;
+  else
+    base_buffer = current_buffer;
+
 #ifdef CLASH_DETECTION
-  if (!NILP (current_buffer->file_truename)
+  if (!NILP (base_buffer->file_truename)
       /* Make binding buffer-file-name to nil effective.  */
-      && !NILP (current_buffer->filename)
+      && !NILP (base_buffer->filename)
       && SAVE_MODIFF >= MODIFF)
-    lock_file (current_buffer->file_truename);
+    lock_file (base_buffer->file_truename);
 #else
   /* At least warn if this file has changed on disk since it was visited.  */
-  if (!NILP (current_buffer->filename)
+  if (!NILP (base_buffer->filename)
       && SAVE_MODIFF >= MODIFF
       && NILP (Fverify_visited_file_modtime (Fcurrent_buffer ()))
-      && !NILP (Ffile_exists_p (current_buffer->filename)))
+      && !NILP (Ffile_exists_p (base_buffer->filename)))
     call1 (intern ("ask-user-about-supersession-threat"),
-	   current_buffer->filename);
+	   base_buffer->filename);
 #endif /* not CLASH_DETECTION */
 
   signal_before_change (start, end, preserve_ptr);