]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid assertion violations in nonsensical calls to 'signal'
authorEli Zaretskii <eliz@gnu.org>
Sun, 7 Oct 2018 14:45:12 +0000 (17:45 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sun, 7 Oct 2018 14:45:12 +0000 (17:45 +0300)
* 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)

src/eval.c

index f9563a3f80c1fc9615919f4f48dbf55777c0efa1..e90a9861a1a6fcecf771afb8ba6f414e419924e6 100644 (file)
@@ -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);
 }