aboutsummaryrefslogtreecommitdiffstats
path: root/src/xfns.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/xfns.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/xfns.c')
-rw-r--r--src/xfns.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/xfns.c b/src/xfns.c
index 798dc49bef5..c44997b3d6f 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -6346,7 +6346,7 @@ value of DIR as in previous invocations; this is standard Windows behavior. */)
6346 6346
6347 /* Make "Cancel" equivalent to C-g. */ 6347 /* Make "Cancel" equivalent to C-g. */
6348 if (NILP (file)) 6348 if (NILP (file))
6349 Fsignal (Qquit, Qnil); 6349 quit ();
6350 6350
6351 decoded_file = DECODE_FILE (file); 6351 decoded_file = DECODE_FILE (file);
6352 6352
@@ -6418,7 +6418,7 @@ value of DIR as in previous invocations; this is standard Windows behavior. */)
6418 6418
6419 /* Make "Cancel" equivalent to C-g. */ 6419 /* Make "Cancel" equivalent to C-g. */
6420 if (NILP (file)) 6420 if (NILP (file))
6421 Fsignal (Qquit, Qnil); 6421 quit ();
6422 6422
6423 decoded_file = DECODE_FILE (file); 6423 decoded_file = DECODE_FILE (file);
6424 6424
@@ -6469,7 +6469,7 @@ nil, it defaults to the selected frame. */)
6469 unblock_input (); 6469 unblock_input ();
6470 6470
6471 if (NILP (font)) 6471 if (NILP (font))
6472 Fsignal (Qquit, Qnil); 6472 quit ();
6473 6473
6474 return unbind_to (count, font); 6474 return unbind_to (count, font);
6475} 6475}