From a0f7f73ebb3ab032af08699c24c465403512b7d8 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 20 Jan 2021 22:22:49 +0100 Subject: [PATCH] patch 8.2.2380: Vim9: occasional crash when using try/catch and a timer Problem: Vim9: occasional crash when using try/catch and a timer. Solution: Save and restore "need_rethrow" when invoking a timer callback. (closes #7708) --- src/time.c | 3 +++ src/version.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/time.c b/src/time.c index d1cf21b6b..c5ab69305 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) diff --git a/src/version.c b/src/version.c index 2e67f32ae..0e4a97b95 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2380, /**/ 2379, /**/ -- 2.50.1