diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2025-03-06 15:23:03 -0500 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2025-03-06 15:23:03 -0500 |
commit | fb33e3b4c79f8d922d9fe6e593dcc12c3c4b24eb (patch) | |
tree | d6e58dde3d4273791bdea01a21c0eb588d4b82a6 /lisp/emacs-lisp/debug-early.el | |
parent | 4719df9f42c157e2683ac641883cff5efaa480bc (diff) | |
download | emacs-fb33e3b4c79f8d922d9fe6e593dcc12c3c4b24eb.tar.gz emacs-fb33e3b4c79f8d922d9fe6e593dcc12c3c4b24eb.tar.bz2 emacs-fb33e3b4c79f8d922d9fe6e593dcc12c3c4b24eb.zip |
(debug--early): Avoid re-entering the debugger for the same error
Fixes bug#76787.
* lisp/emacs-lisp/debug.el (debugger--last-error): Move ...
* lisp/emacs-lisp/debug-early.el (debugger--last-error): ... here.
(debug--early): Use it.
Diffstat (limited to 'lisp/emacs-lisp/debug-early.el')
-rw-r--r-- | lisp/emacs-lisp/debug-early.el | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/lisp/emacs-lisp/debug-early.el b/lisp/emacs-lisp/debug-early.el index 48b71e7f9f0..b6fdef00080 100644 --- a/lisp/emacs-lisp/debug-early.el +++ b/lisp/emacs-lisp/debug-early.el @@ -36,6 +36,8 @@ ;; For bootstrap reasons, we cannot use any macros here since they're ;; not defined yet. +(defvar debugger--last-error nil) + (defalias 'debug-early-backtrace #'(lambda (&optional base) "Print a trace of Lisp function calls currently active. @@ -76,15 +78,20 @@ of the build process." (setq args (cdr args))) (princ " "))) (princ ")\n")))) - base)))) + base)) + (message "debug-early-backtrace...done"))) (defalias 'debug--early #'(lambda (error base) - (princ "\nError: ") - (prin1 (car error)) ; The error symbol. - (princ " ") - (prin1 (cdr error)) ; The error data. - (debug-early-backtrace base))) + (if (eq error debugger--last-error) nil + (setq debugger--last-error nil) + (princ "\nError: ") + (prin1 (car error)) ; The error symbol. + (princ " ") + (prin1 (cdr error)) ; The error data. + (prog1 ;; Purposefully not `unwind-protect'! + (debug-early-backtrace base) + (setq debugger--last-error error))))) (defalias 'debug-early ;Called from C. #'(lambda (&rest args) |