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
index 083fd8f..c0293ce 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -8307,7 +8307,6 @@
// 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
index 1adaaed..f325935 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -8335,7 +8335,7 @@
* 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 @@
{
BOOL ret;
- timeout_flag = &timeout_flags[flag_idx];
+ timeout_flag = &timeout_flags[timeout_flag_idx];
stop_timeout();
ret = CreateTimerQueueTimer(
@@ -8395,7 +8395,7 @@
}
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
index 0a6a8af..32661f6 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -61,6 +61,7 @@
disable_regexp_timeout(void)
{
stop_timeout();
+ timeout_flag = &dummy_timeout_flag;
}
#endif
diff --git a/src/version.c b/src/version.c
index 75cbbaf..d038087 100644
--- a/src/version.c
+++ b/src/version.c
@@ -735,6 +735,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 5129,
+/**/
5128,
/**/
5127,