diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-01-20 22:22:49 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-01-20 22:22:49 +0100 |
commit | a0f7f73ebb3ab032af08699c24c465403512b7d8 (patch) | |
tree | e237cf8b5177cf359766a8730a65d030543ea005 /src/time.c | |
parent | 77a849c4b3d73c228013a047913c90834a93b4f6 (diff) |
patch 8.2.2380: Vim9: occasional crash when using try/catch and a timerv8.2.2380
Problem: Vim9: occasional crash when using try/catch and a timer.
Solution: Save and restore "need_rethrow" when invoking a timer callback.
(closes #7708)
Diffstat (limited to 'src/time.c')
-rw-r--r-- | src/time.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/time.c b/src/time.c index d1cf21b6bc..c5ab693050 100644 --- a/src/time.c +++ b/src/time.c @@ -478,6 +478,7 @@ check_due_timer(void) int save_must_redraw = must_redraw; int save_trylevel = trylevel; int save_did_throw = did_throw; + int save_need_rethrow = need_rethrow; int save_ex_pressedreturn = get_pressedreturn(); int save_may_garbage_collect = may_garbage_collect; except_T *save_current_exception = current_exception; @@ -493,6 +494,7 @@ check_due_timer(void) must_redraw = 0; trylevel = 0; did_throw = FALSE; + need_rethrow = FALSE; current_exception = NULL; may_garbage_collect = FALSE; save_vimvars(&vvsave); @@ -513,6 +515,7 @@ check_due_timer(void) called_emsg = save_called_emsg; trylevel = save_trylevel; did_throw = save_did_throw; + need_rethrow = save_need_rethrow; current_exception = save_current_exception; restore_vimvars(&vvsave); if (must_redraw != 0) |