aboutsummaryrefslogtreecommitdiffstats
path: root/src/bytecode.c
diff options
context:
space:
mode:
authorPaul Eggert2016-07-24 11:10:09 +0200
committerPaul Eggert2016-07-25 00:38:34 +0200
commit50cc08bf6e6cdc96dcdcbef388cf9cf76a15f81a (patch)
tree9cfd5f799262e0ba85d7213113bdb20302196e74 /src/bytecode.c
parent2c2b0cd07c143e33af9f7237ef4819c28764a90f (diff)
downloademacs-50cc08bf6e6cdc96dcdcbef388cf9cf76a15f81a.tar.gz
emacs-50cc08bf6e6cdc96dcdcbef388cf9cf76a15f81a.zip
‘signal’ no longer returns
Although for decades ‘signal’ has been documented to not return, a corner case in the Lisp debugger causes ‘signal’ to return. Remove the corner case and adjust Emacs internals accordingly. An alternative would be to document the corner case, but this would complicate the Lisp API unnecessarily. (Bug#24047) * src/eval.c (signal_or_quit): New function, with most of the old contents of Fsignal. (quit): New function, which uses signal_or_quit and which might return. All keyboard-based callers of Fsignal (Qquit, Qnil) changed to use this new function instead. (Fsignal): Use signal_or_quit. Now _Noreturn. All callers changed. (xsignal): Move to lisp.h. * src/lisp.h (xsignal): Now an inline function, as it's now just an alias for Fsignal.
Diffstat (limited to 'src/bytecode.c')
-rw-r--r--src/bytecode.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/bytecode.c b/src/bytecode.c
index 05bc9fcdb08..ee1b79f1826 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -386,7 +386,7 @@ relocate_byte_stack (void)
386 Vquit_flag = Qnil; \ 386 Vquit_flag = Qnil; \
387 if (EQ (Vthrow_on_input, flag)) \ 387 if (EQ (Vthrow_on_input, flag)) \
388 Fthrow (Vthrow_on_input, Qt); \ 388 Fthrow (Vthrow_on_input, Qt); \
389 Fsignal (Qquit, Qnil); \ 389 quit (); \
390 } \ 390 } \
391 else if (pending_signals) \ 391 else if (pending_signals) \
392 process_pending_signals (); \ 392 process_pending_signals (); \