diff options
| author | Dmitry Antipov | 2014-02-10 13:48:17 +0400 |
|---|---|---|
| committer | Dmitry Antipov | 2014-02-10 13:48:17 +0400 |
| commit | 575593db501105518d4715e4c2e8d637f9e7208a (patch) | |
| tree | 88052471dbb7ba0ee5c0beceed2ff98059fe71d5 /src | |
| parent | 2b44e4584b8b113a8fbfcca6e8980383a77a9717 (diff) | |
| download | emacs-575593db501105518d4715e4c2e8d637f9e7208a.tar.gz emacs-575593db501105518d4715e4c2e8d637f9e7208a.zip | |
* eval.c (call_debugger): When exiting the debugger, do not allow
max_specpdl_size less than actual binding depth (Bug#16603).
(syms_of_eval): Adjust docstring.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 3 | ||||
| -rw-r--r-- | src/eval.c | 8 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index f65319c9fe7..fef7cf0e47f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -8,6 +8,9 @@ | |||
| 8 | 8 | ||
| 9 | * cmds.c (Fself_insert_command): Respect the width of EMACS_INT | 9 | * cmds.c (Fself_insert_command): Respect the width of EMACS_INT |
| 10 | and avoid warning. | 10 | and avoid warning. |
| 11 | * eval.c (call_debugger): When exiting the debugger, do not allow | ||
| 12 | max_specpdl_size less than actual binding depth (Bug#16603). | ||
| 13 | (syms_of_eval): Adjust docstring. | ||
| 11 | 14 | ||
| 12 | 2014-02-09 Lars Ingebrigtsen <larsi@gnus.org> | 15 | 2014-02-09 Lars Ingebrigtsen <larsi@gnus.org> |
| 13 | 16 | ||
diff --git a/src/eval.c b/src/eval.c index da68a3014dd..a96d413d09f 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -283,7 +283,9 @@ call_debugger (Lisp_Object arg) | |||
| 283 | bool debug_while_redisplaying; | 283 | bool debug_while_redisplaying; |
| 284 | ptrdiff_t count = SPECPDL_INDEX (); | 284 | ptrdiff_t count = SPECPDL_INDEX (); |
| 285 | Lisp_Object val; | 285 | Lisp_Object val; |
| 286 | EMACS_INT old_max = max_specpdl_size, old_depth = max_lisp_eval_depth; | 286 | EMACS_INT old_depth = max_lisp_eval_depth; |
| 287 | /* Do not allow max_specpdl_size less than actual depth (Bug#16603). */ | ||
| 288 | EMACS_INT old_max = max (max_specpdl_size, count); | ||
| 287 | 289 | ||
| 288 | if (lisp_eval_depth + 40 > max_lisp_eval_depth) | 290 | if (lisp_eval_depth + 40 > max_lisp_eval_depth) |
| 289 | max_lisp_eval_depth = lisp_eval_depth + 40; | 291 | max_lisp_eval_depth = lisp_eval_depth + 40; |
| @@ -3721,7 +3723,9 @@ If Lisp code tries to increase the total number past this amount, | |||
| 3721 | an error is signaled. | 3723 | an error is signaled. |
| 3722 | You can safely use a value considerably larger than the default value, | 3724 | You can safely use a value considerably larger than the default value, |
| 3723 | if that proves inconveniently small. However, if you increase it too far, | 3725 | if that proves inconveniently small. However, if you increase it too far, |
| 3724 | Emacs could run out of memory trying to make the stack bigger. */); | 3726 | Emacs could run out of memory trying to make the stack bigger. |
| 3727 | Note that this limit may be silently increased by the debugger | ||
| 3728 | if `debug-on-error' or `debug-on-quit' is set. */); | ||
| 3725 | 3729 | ||
| 3726 | DEFVAR_INT ("max-lisp-eval-depth", max_lisp_eval_depth, | 3730 | DEFVAR_INT ("max-lisp-eval-depth", max_lisp_eval_depth, |
| 3727 | doc: /* Limit on depth in `eval', `apply' and `funcall' before error. | 3731 | doc: /* Limit on depth in `eval', `apply' and `funcall' before error. |