From: Lars Ingebrigtsen Date: Fri, 13 Aug 2021 11:19:39 +0000 (+0200) Subject: Fix problem where an error would change standard-output X-Git-Tag: emacs-28.0.90~1524 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=65dd00667ff060cf79fea4b49bfa4d8f7a16ee1f;p=emacs.git Fix problem where an error would change standard-output * src/keyboard.c (cmd_error): Don't set standard-output/standard-input (bug#30529). Instead bind them temporarily while handling the error. --- diff --git a/src/keyboard.c b/src/keyboard.c index 820229cf8fe..2e4c4e6aabf 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -924,6 +924,7 @@ static Lisp_Object cmd_error (Lisp_Object data) { Lisp_Object old_level, old_length; + ptrdiff_t count = SPECPDL_INDEX (); Lisp_Object conditions; char macroerror[sizeof "After..kbd macro iterations: " + INT_STRLEN_BOUND (EMACS_INT)]; @@ -951,8 +952,8 @@ cmd_error (Lisp_Object data) executing_kbd_macro = Qnil; } - Vstandard_output = Qt; - Vstandard_input = Qt; + specbind (Qstandard_output, Qt); + specbind (Qstandard_input, Qt); kset_prefix_arg (current_kboard, Qnil); kset_last_prefix_arg (current_kboard, Qnil); cancel_echoing (); @@ -969,6 +970,7 @@ cmd_error (Lisp_Object data) Vquit_flag = Qnil; Vinhibit_quit = Qnil; + unbind_to (count, Qnil); return make_fixnum (0); }