]> git.eshelyaron.com Git - emacs.git/commitdiff
Be more resilient towards errors during error handling
authorLars Ingebrigtsen <larsi@gnus.org>
Thu, 5 May 2022 11:22:33 +0000 (13:22 +0200)
committerEli Zaretskii <eliz@gnu.org>
Thu, 5 May 2022 17:05:28 +0000 (20:05 +0300)
* src/print.c (print_error_message): Avoid infinite recursion if
`substitute-command-keys' bugs out (bug#55269).

(cherry picked from commit 8364f058b821eba31f84dcded175cca403a965a5)

src/print.c

index 3a26e5665e5fa7a9edffbb6d71d638a7baa6997a..43ec0934ba1534d9c6f69e5a37fbefa90242bd48 100644 (file)
@@ -944,7 +944,14 @@ print_error_message (Lisp_Object data, Lisp_Object stream, const char *context,
       errmsg = Fget (errname, Qerror_message);
       /* During loadup 'substitute-command-keys' might not be available.  */
       if (!NILP (Ffboundp (Qsubstitute_command_keys)))
-       errmsg = call1 (Qsubstitute_command_keys, errmsg);
+       {
+         /* `substitute-command-keys' may bug out, which would lead
+            to infinite recursion when we're called from
+            skip_debugger, so ignore errors.  */
+         Lisp_Object subs = safe_call1 (Qsubstitute_command_keys, errmsg);
+         if (!NILP (subs))
+           errmsg = subs;
+       }
 
       file_error = Fmemq (Qfile_error, error_conditions);
     }