summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-04-25 13:28:00 +0100
committerBram Moolenaar <Bram@vim.org>2022-04-25 13:28:00 +0100
commit23d5770ef5e2f5c6d20d123303b81327045e5a1e (patch)
treec49bc4633fea401678305c1de139624ec5dc3d38
parent372bcceeee8012ef3fb2f3dbc8132c3a33cb84fc (diff)
downloadvim-git-23d5770ef5e2f5c6d20d123303b81327045e5a1e.tar.gz
patch 8.2.4824: expression is evaluated multiple timesv8.2.4824
Problem: Expression is evaluated multiple times. Solution: Evaluate expression once and store the result. (closes #10278)
-rw-r--r--src/map.c11
-rw-r--r--src/version.c2
2 files changed, 7 insertions, 6 deletions
diff --git a/src/map.c b/src/map.c
index 38f528289..b2f9dcf51 100644
--- a/src/map.c
+++ b/src/map.c
@@ -508,6 +508,7 @@ do_map(
{
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 @@ do_map(
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 @@ do_map(
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 @@ do_map(
// 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 @@ do_map(
#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 b060d5eac..7ff5c6e0d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4824,
+/**/
4823,
/**/
4822,