Subject: bug#78738: (signal nil 5) crashes Emacs

From: Manuel Giraud <[email-masked]>
Date: Tue, 10 Jun 2025 13:46:10 +0200

Eli Zaretskii <[email-masked]> writes:

>> Cc: [email-masked]
>> Date: Tue, 10 Jun 2025 06:22:49 +0000
>> From:  Pip Cet via "Bug reports for GNU Emacs,
>>  the Swiss army knife of text editors" <[email-masked]>
>> 
>> "Daniel Colascione" <[email-masked]> writes:
>> 
>> > (signal nil 5) crashes Emacs
>> 
>> Good catch!
>> 
>> This would fix it, right?
>> 
>> diff --git a/src/eval.c b/src/eval.c
>> index fbb881d682d..be6d1a0a9ac 100644
>> --- a/src/eval.c
>> +++ b/src/eval.c
>> @@ -1888,7 +1888,7 @@ DEFUN ("signal", Fsignal, Ssignal, 2, 2, 0,
>>    (Lisp_Object error_symbol, Lisp_Object data)
>>  {
>>    /* If they call us with nonsensical arguments, produce "peculiar error".  */
>> -  if (NILP (error_symbol) && NILP (data))
>> +  if (NILP (error_symbol) && !CONSP (data))
>>      error_symbol = Qerror;
>>    signal_or_quit (error_symbol, data, false);
>>    eassume (false);
>
> Thanks.  If this keeps bug#32961 solved, please install on the
> emacs-30 branch, since this is a regression in Emacs 30.

On this matter, what is the code path that leads to a call to
signal_or_quit with a nil error_symbol parameter?  According to the
comment at eval.c:1912, it means that the memory is full but I cannot
figure out how we can get there.
-- 
Manuel Giraud