diff options
Diffstat (limited to 'test/src')
| -rw-r--r-- | test/src/eval-tests.el | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/src/eval-tests.el b/test/src/eval-tests.el index 201382da9c4..e68fd136113 100644 --- a/test/src/eval-tests.el +++ b/test/src/eval-tests.el | |||
| @@ -79,4 +79,24 @@ Bug#24912 and Bug#24913." | |||
| 79 | (let ((clauses (list '((progn (setcdr clauses "ouch") nil))))) | 79 | (let ((clauses (list '((progn (setcdr clauses "ouch") nil))))) |
| 80 | (should-error (eval (cons 'cond clauses))))) | 80 | (should-error (eval (cons 'cond clauses))))) |
| 81 | 81 | ||
| 82 | (defun eval-tests--exceed-specbind-limit () | ||
| 83 | (defvar eval-tests--var1) | ||
| 84 | (defvar eval-tests--var2) | ||
| 85 | ;; Bind two variables, to make extra sure we hit the | ||
| 86 | ;; `max-specpdl-size' limit before the `max-lisp-eval-depth' limit. | ||
| 87 | (let ((eval-tests--var1 1) | ||
| 88 | (eval-tests--var2 2)) | ||
| 89 | ;; Recurse until we hit the limit. | ||
| 90 | (eval-tests--exceed-specbind-limit))) | ||
| 91 | |||
| 92 | (ert-deftest eval-exceed-specbind-with-signal-hook () | ||
| 93 | "Test for Bug#30481. | ||
| 94 | Check that Emacs doesn't crash when exceeding specbind limit with | ||
| 95 | `signal-hook-function' bound. NOTE: Without the fix for | ||
| 96 | Bug#30481, this test can appear to pass, but cause a | ||
| 97 | crash/abort/malloc assert failure on the next test." | ||
| 98 | (let ((max-specpdl-size (/ max-lisp-eval-depth 2)) | ||
| 99 | (signal-hook-function #'ignore)) | ||
| 100 | (should-error (eval-tests--exceed-specbind-limit)))) | ||
| 101 | |||
| 82 | ;;; eval-tests.el ends here | 102 | ;;; eval-tests.el ends here |