Mercurial > emacs
comparison src/process.c @ 103134:9569175bb813
(read_process_output): Make sure the current buffer is
always restored.
author | Andreas Schwab <schwab@linux-m68k.org> |
---|---|
date | Sat, 02 May 2009 11:54:43 +0000 |
parents | e61fae00d13e |
children | 3fb472c8bc3c |
comparison
equal
deleted
inserted
replaced
103133:2f7395806731 | 103134:9569175bb813 |
---|---|
5183 register int channel; | 5183 register int channel; |
5184 { | 5184 { |
5185 register int nbytes; | 5185 register int nbytes; |
5186 char *chars; | 5186 char *chars; |
5187 register Lisp_Object outstream; | 5187 register Lisp_Object outstream; |
5188 register struct buffer *old = current_buffer; | |
5189 register struct Lisp_Process *p = XPROCESS (proc); | 5188 register struct Lisp_Process *p = XPROCESS (proc); |
5190 register int opoint; | 5189 register int opoint; |
5191 struct coding_system *coding = proc_decode_coding_system[channel]; | 5190 struct coding_system *coding = proc_decode_coding_system[channel]; |
5192 int carryover = p->decoding_carryover; | 5191 int carryover = p->decoding_carryover; |
5193 int readmax = 4096; | 5192 int readmax = 4096; |
5383 Lisp_Object odeactivate; | 5382 Lisp_Object odeactivate; |
5384 int before, before_byte; | 5383 int before, before_byte; |
5385 int opoint_byte; | 5384 int opoint_byte; |
5386 Lisp_Object text; | 5385 Lisp_Object text; |
5387 struct buffer *b; | 5386 struct buffer *b; |
5387 int count = SPECPDL_INDEX (); | |
5388 | 5388 |
5389 odeactivate = Vdeactivate_mark; | 5389 odeactivate = Vdeactivate_mark; |
5390 | 5390 |
5391 record_unwind_protect (Fset_buffer, Fcurrent_buffer ()); | |
5391 Fset_buffer (p->buffer); | 5392 Fset_buffer (p->buffer); |
5392 opoint = PT; | 5393 opoint = PT; |
5393 opoint_byte = PT_BYTE; | 5394 opoint_byte = PT_BYTE; |
5394 old_read_only = current_buffer->read_only; | 5395 old_read_only = current_buffer->read_only; |
5395 old_begv = BEGV; | 5396 old_begv = BEGV; |
5488 /* Handling the process output should not deactivate the mark. */ | 5489 /* Handling the process output should not deactivate the mark. */ |
5489 Vdeactivate_mark = odeactivate; | 5490 Vdeactivate_mark = odeactivate; |
5490 | 5491 |
5491 current_buffer->read_only = old_read_only; | 5492 current_buffer->read_only = old_read_only; |
5492 SET_PT_BOTH (opoint, opoint_byte); | 5493 SET_PT_BOTH (opoint, opoint_byte); |
5493 set_buffer_internal (old); | 5494 unbind_to (count, Qnil); |
5494 } | 5495 } |
5495 return nbytes; | 5496 return nbytes; |
5496 } | 5497 } |
5497 | 5498 |
5498 DEFUN ("waiting-for-user-input-p", Fwaiting_for_user_input_p, Swaiting_for_user_input_p, | 5499 DEFUN ("waiting-for-user-input-p", Fwaiting_for_user_input_p, Swaiting_for_user_input_p, |