From: Eli Zaretskii Date: Sun, 7 Oct 2018 14:45:12 +0000 (+0300) Subject: Avoid assertion violations in nonsensical calls to 'signal' X-Git-Tag: emacs-26.1.90~103 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=14c032d;p=emacs.git Avoid assertion violations in nonsensical calls to 'signal' * src/eval.c (Fsignal): If both arguments are nil, replace the first one with 'error', to avoid assertion violations further down the line. (Bug#32961) --- 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); }