changeset 34352:642fb6c53a10

(read_process_output): Make sure the process marker's position is valid when the process buffer is changed in after-change functions. W3 does that.
author Gerd Moellmann <gerd@gnu.org>
date Thu, 07 Dec 2000 15:50:30 +0000
parents fedc41b477f0
children e477bbc45459
files src/process.c
diffstat 1 files changed, 9 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/process.c	Thu Dec 07 15:23:07 2000 +0000
+++ b/src/process.c	Thu Dec 07 15:50:30 2000 +0000
@@ -3055,6 +3055,7 @@
       int before, before_byte;
       int opoint_byte;
       Lisp_Object text;
+      struct buffer *b;
 
       odeactivate = Vdeactivate_mark;
 
@@ -3120,7 +3121,14 @@
       signal_after_change (before, 0, PT - before);
       update_compositions (before, PT, CHECK_BORDER);
 
-      set_marker_both (p->mark, p->buffer, PT, PT_BYTE);
+      /* Make sure the process marker's position is valid when the
+	 process buffer is changed in the signal_after_change above.
+	 W3 is known to do that.  */
+      if (BUFFERP (p->buffer)
+	  && (b = XBUFFER (p->buffer), b != current_buffer))
+	set_marker_both (p->mark, p->buffer, BUF_PT (b), BUF_PT_BYTE (b));
+      else
+	set_marker_both (p->mark, p->buffer, PT, PT_BYTE);
 
       update_mode_lines++;