]> git.eshelyaron.com Git - emacs.git/commit
eval.c: Add new var `lisp-eval-depth-reserve`
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 27 Dec 2023 04:56:09 +0000 (23:56 -0500)
committerEshel Yaron <me@eshelyaron.com>
Fri, 5 Jan 2024 08:20:27 +0000 (09:20 +0100)
commit0dfebb410301e1a336b57f8196aaf7473d5f7f94
treea025cd0cb634c5252a969f4664b6eff61e742d45
parent63267aa65231d94781a4ab1d1e7f6a4430e4b513
eval.c: Add new var `lisp-eval-depth-reserve`

Rather than blindly increase `max-lisp-eval-depth` when entering the
debugger or running `signal-hook-function`, use this new "reserve"
to keep track of how much we have grown the stack for "debugger"
purposes so that for example recursive calls to `signal-hook-function`
can't eat up the whole C stack.

* src/eval.c (max_ensure_room): Rewrite.
(restore_stack_limits): Move before `max_ensure_room`.  Rewrite.
(call_debugger, signal_or_quit): Adjust calls accordingly.
Also grow `max-lisp-eval-depth` for `hander-bind` handlers.
(init_eval_once): Don't initialize `max_lisp_eval_depth` here.
(syms_of_eval): Initialize it here instead.
Add new var `lisp-eval-depth-reserve`.

* doc/lispref/eval.texi (Eval): Add `lisp-eval-depth-reserve`.

(cherry picked from commit 02edbc88a1210b8d5a3e62ca4f03ffd17b23cbf7)
doc/lispref/eval.texi
etc/NEWS
src/eval.c