2000-12-07 Gerd Moellmann <gerd@gnu.org>
+ * process.c (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.
+
* xfns.c (x_free_gcs): New function.
* xterm.h (x_free_gcs): Add prototype.
int before, before_byte;
int opoint_byte;
Lisp_Object text;
+ struct buffer *b;
odeactivate = Vdeactivate_mark;
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++;