summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/eval.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/eval.c b/src/eval.c
index f9563a3f80c..e90a9861a1a 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1503,7 +1503,7 @@ DEFUN ("signal", Fsignal, Ssignal, 2, 2, 0,
This function does not return.
An error symbol is a symbol with an `error-conditions' property
-that is a list of condition names.
+that is a list of condition names. The symbol should be non-nil.
A handler for any of those names will get to handle this signal.
The symbol `error' should normally be one of them.
@@ -1515,6 +1515,9 @@ See also the function `condition-case'. */
attributes: noreturn)
(Lisp_Object error_symbol, Lisp_Object data)
{
+ /* If they call us with nonsensical arguments, produce "peculiar error". */
+ if (NILP (error_symbol) && NILP (data))
+ error_symbol = Qerror;
signal_or_quit (error_symbol, data, false);
eassume (false);
}