Mercurial > emacs
changeset 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 | 2f7395806731 |
children | 31694eae75d8 |
files | src/ChangeLog src/process.c |
diffstat | 2 files changed, 6 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Sat May 02 11:32:42 2009 +0000 +++ b/src/ChangeLog Sat May 02 11:54:43 2009 +0000 @@ -1,5 +1,8 @@ 2009-05-02 Andreas Schwab <schwab@linux-m68k.org> + * process.c (read_process_output): Make sure the current buffer is + always restored. + * coding.c (record_conversion_result): Don't modify Vlast_code_conversion_error for successful result. (alloc_destination): Don't clobber conversion result. (Bug#1650)
--- a/src/process.c Sat May 02 11:32:42 2009 +0000 +++ b/src/process.c Sat May 02 11:54:43 2009 +0000 @@ -5185,7 +5185,6 @@ register int nbytes; char *chars; register Lisp_Object outstream; - register struct buffer *old = current_buffer; register struct Lisp_Process *p = XPROCESS (proc); register int opoint; struct coding_system *coding = proc_decode_coding_system[channel]; @@ -5385,9 +5384,11 @@ int opoint_byte; Lisp_Object text; struct buffer *b; + int count = SPECPDL_INDEX (); odeactivate = Vdeactivate_mark; + record_unwind_protect (Fset_buffer, Fcurrent_buffer ()); Fset_buffer (p->buffer); opoint = PT; opoint_byte = PT_BYTE; @@ -5490,7 +5491,7 @@ current_buffer->read_only = old_read_only; SET_PT_BOTH (opoint, opoint_byte); - set_buffer_internal (old); + unbind_to (count, Qnil); } return nbytes; }