From ab293d12ef045042b62df7670cf9fe05f175ce19 Mon Sep 17 00:00:00 2001 From: Gemini Lasswell Date: Wed, 20 Jun 2018 13:58:33 -0700 Subject: [PATCH] Increase max-lisp-eval-depth adjustment while in debugger * 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 593fab9727..821d674882 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el @@ -322,6 +322,7 @@ debugger-setup-buffer (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 ca1eb84ff3..40cba3bb1c 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. */ -- 2.16.4