From 65dd00667ff060cf79fea4b49bfa4d8f7a16ee1f Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Fri, 13 Aug 2021 13:19:39 +0200 Subject: [PATCH] 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. --- src/keyboard.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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); } -- 2.39.5