From: Chong Yidong Date: Wed, 5 Jul 2006 16:05:02 +0000 (+0000) Subject: * insdel.c (prepare_to_modify_buffer): For an indirect buffer, do X-Git-Tag: emacs-pretest-22.0.90~1684 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=234fb7734a5577ede16c6d40bac73e5fbe7bb33e;p=emacs.git * insdel.c (prepare_to_modify_buffer): For an indirect buffer, do clash detection using the base buffer. --- diff --git a/src/ChangeLog b/src/ChangeLog index 2a5e7afa99a..d91bee1cb1c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,8 @@ 2006-07-05 Chong Yidong + * 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 diff --git a/src/insdel.c b/src/insdel.c index b9d9574788e..b97539c1cc2 100644 --- a/src/insdel.c +++ b/src/insdel.c @@ -2031,6 +2031,8 @@ prepare_to_modify_buffer (start, end, preserve_ptr) 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 @@ prepare_to_modify_buffer (start, end, preserve_ptr) 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);