emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-26 4bd43b0: Increase max-lisp-eval-depth adjustment


From: Gemini Lasswell
Subject: [Emacs-diffs] emacs-26 4bd43b0: Increase max-lisp-eval-depth adjustment while in debugger (bug#31919)
Date: Sat, 30 Jun 2018 10:37:43 -0400 (EDT)

branch: emacs-26
commit 4bd43b03526ae893609c7b54958fc332a1c81681
Author: Gemini Lasswell <address@hidden>
Commit: Gemini Lasswell <address@hidden>

    Increase max-lisp-eval-depth adjustment while in debugger (bug#31919)
    
    * src/eval.c (call_debugger): Increase the amount of extra Lisp
    evaluation depth given to the debugger to allow it to call cl-print.
    * lisp/emacs-lisp/debug.el (debugger-setup-buffer): Add a comment
    to suggest updating call_debugger when changing print-level.
---
 lisp/emacs-lisp/debug.el | 1 +
 src/eval.c               | 8 ++++++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
index 593fab9..821d674 100644
--- a/lisp/emacs-lisp/debug.el
+++ b/lisp/emacs-lisp/debug.el
@@ -322,6 +322,7 @@ That buffer should be current already."
                  (backtrace-frames 'debug)))
         (print-escape-newlines t)
         (print-escape-control-characters t)
+        ;; If you increase print-level, add more depth in call_debugger.
         (print-level 8)
         (print-length 50)
         (pos (point)))
diff --git a/src/eval.c b/src/eval.c
index ca1eb84..40cba3b 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -282,8 +282,12 @@ call_debugger (Lisp_Object arg)
   /* Do not allow max_specpdl_size less than actual depth (Bug#16603).  */
   EMACS_INT old_max = max (max_specpdl_size, count);
 
-  if (lisp_eval_depth + 40 > max_lisp_eval_depth)
-    max_lisp_eval_depth = lisp_eval_depth + 40;
+  /* The previous value of 40 is too small now that the debugger
+     prints using cl-prin1 instead of prin1.  Printing lists nested 8
+     deep (which is the value of print-level used in the debugger)
+     currently requires 77 additional frames.  See bug#31919.  */
+  if (lisp_eval_depth + 100 > max_lisp_eval_depth)
+    max_lisp_eval_depth = lisp_eval_depth + 100;
 
   /* While debugging Bug#16603, previous value of 100 was found
      too small to avoid specpdl overflow in the debugger itself.  */



reply via email to

[Prev in Thread] Current Thread [Next in Thread]