diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-04-25 13:28:00 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-04-25 13:28:00 +0100 |
commit | 23d5770ef5e2f5c6d20d123303b81327045e5a1e (patch) | |
tree | c49bc4633fea401678305c1de139624ec5dc3d38 | |
parent | 372bcceeee8012ef3fb2f3dbc8132c3a33cb84fc (diff) | |
download | vim-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.c | 11 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 7 insertions, 6 deletions
@@ -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, |