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)
This commit is contained in:
parent
b99192fe24
commit
14c032d5f8
1 changed files with 4 additions and 1 deletions
|
@ -1503,7 +1503,7 @@ DEFUN ("signal", Fsignal, Ssignal, 2, 2, 0,
|
||||||
This function does not return.
|
This function does not return.
|
||||||
|
|
||||||
An error symbol is a symbol with an `error-conditions' property
|
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.
|
A handler for any of those names will get to handle this signal.
|
||||||
The symbol `error' should normally be one of them.
|
The symbol `error' should normally be one of them.
|
||||||
|
|
||||||
|
@ -1515,6 +1515,9 @@ See also the function `condition-case'. */
|
||||||
attributes: noreturn)
|
attributes: noreturn)
|
||||||
(Lisp_Object error_symbol, Lisp_Object data)
|
(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);
|
signal_or_quit (error_symbol, data, false);
|
||||||
eassume (false);
|
eassume (false);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue