patch 8.2.4824: expression is evaluated multiple times
Problem: Expression is evaluated multiple times.
Solution: Evaluate expression once and store the result. (closes #10278)
diff --git a/src/map.c b/src/map.c
index 38f5282..b2f9dcf 100644
--- a/src/map.c
+++ b/src/map.c
@@ -508,6 +508,7 @@
{
int did_it = FALSE;
int did_local = FALSE;
+ int keyround1_simplfied = keyround == 1 && did_simplify;
int round;
int hash;
int new_hash;
@@ -725,8 +726,7 @@
mpp = &(mp->m_next);
continue;
}
- if (did_simplify && keyround == 1
- && !mp->m_simplified)
+ if (keyround1_simplfied && !mp->m_simplified)
break;
// We reset the indicated mode bits. If nothing
// is left the entry is deleted below.
@@ -779,8 +779,7 @@
mp->m_nowait = nowait;
mp->m_silent = silent;
mp->m_mode = mode;
- mp->m_simplified =
- did_simplify && keyround == 1;
+ mp->m_simplified = keyround1_simplfied;
#ifdef FEAT_EVAL
mp->m_expr = expr;
mp->m_script_ctx = current_sctx;
@@ -818,7 +817,7 @@
// delete entry
if (!did_it)
{
- if (!did_simplify || keyround == 2)
+ if (!keyround1_simplfied)
retval = 2; // no match
}
else if (*keys == Ctrl_C)
@@ -854,7 +853,7 @@
#ifdef FEAT_EVAL
expr, /* sid */ -1, /* scriptversion */ 0, /* lnum */ 0,
#endif
- did_simplify && keyround == 1) == FAIL)
+ keyround1_simplfied) == FAIL)
{
retval = 4; // no mem
goto theend;
diff --git a/src/version.c b/src/version.c
index b060d5e..7ff5c6e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4824,
+/**/
4823,
/**/
4822,