# HG changeset patch # User Bram Moolenaar # Date 1655646302 -7200 # Node ID d6f8b784d0f6d3017a26750e15d7ce971d312f87 # Parent aad416d6fb3f186e35f44baf098b064ee7e8e92c patch 8.2.5129: timeout handling is not optimal Commit: https://github.com/vim/vim/commit/1f30caff8b63beda75a5dcd15ffe3e9e818ed483 Author: Bram Moolenaar Date: Sun Jun 19 14:36:35 2022 +0100 patch 8.2.5129: timeout handling is not optimal Problem: Timeout handling is not optimal. Solution: Avoid setting timeout_flag twice. Adjust the pointer when stopping the regexp timeout. Adjust variable name. diff --git a/src/os_unix.c b/src/os_unix.c --- a/src/os_unix.c +++ b/src/os_unix.c @@ -8307,7 +8307,6 @@ start_timeout(long msec) // This is really the caller's responsibility, but let's make sure the // previous timer has been stopped. stop_timeout(); - timeout_flag = FALSE; if (!timer_created) { diff --git a/src/os_win32.c b/src/os_win32.c --- a/src/os_win32.c +++ b/src/os_win32.c @@ -8335,7 +8335,7 @@ static int timer_active = FALSE; * timeouts. */ static int timeout_flags[2]; -static int flag_idx = 0; +static int timeout_flag_idx = 0; static int *timeout_flag = &timeout_flags[0]; @@ -8383,7 +8383,7 @@ start_timeout(long msec) { BOOL ret; - timeout_flag = &timeout_flags[flag_idx]; + timeout_flag = &timeout_flags[timeout_flag_idx]; stop_timeout(); ret = CreateTimerQueueTimer( @@ -8395,7 +8395,7 @@ start_timeout(long msec) } else { - flag_idx = (flag_idx + 1) % 2; + timeout_flag_idx = (timeout_flag_idx + 1) % 2; timer_active = TRUE; *timeout_flag = FALSE; } diff --git a/src/regexp.c b/src/regexp.c --- a/src/regexp.c +++ b/src/regexp.c @@ -61,6 +61,7 @@ init_regexp_timeout(long msec) disable_regexp_timeout(void) { stop_timeout(); + timeout_flag = &dummy_timeout_flag; } #endif diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -735,6 +735,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 5129, +/**/ 5128, /**/ 5127,