summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/debug-early.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2025-03-06 15:23:03 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2025-03-06 15:23:03 -0500
commitfb33e3b4c79f8d922d9fe6e593dcc12c3c4b24eb (patch)
treed6e58dde3d4273791bdea01a21c0eb588d4b82a6 /lisp/emacs-lisp/debug-early.el
parent4719df9f42c157e2683ac641883cff5efaa480bc (diff)
downloademacs-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.el19
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)