summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-11-10 11:43:56 +0100
committerBram Moolenaar <Bram@vim.org>2020-11-10 11:43:56 +0100
commitc56936e2ba4fd219f56aab616fcb283132455697 (patch)
tree3cd2ce6704c282b64d95f29f9e17b936fde2a080
parentf883508e36c209d60388b944e04e22a3fcf603cf (diff)
downloadvim-git-c56936e2ba4fd219f56aab616fcb283132455697.tar.gz
patch 8.2.1971: memory leak when map() failsv8.2.1971
Problem: Memory leak when map() fails. Solution: Clear the typval.
-rw-r--r--src/list.c7
-rw-r--r--src/version.c2
2 files changed, 8 insertions, 1 deletions
diff --git a/src/list.c b/src/list.c
index 866de1871..b62c14164 100644
--- a/src/list.c
+++ b/src/list.c
@@ -2185,8 +2185,13 @@ filter_map(typval_T *argvars, typval_T *rettv, filtermap_T filtermap)
nli = li->li_next;
set_vim_var_nr(VV_KEY, idx);
if (filter_map_one(&li->li_tv, expr, filtermap,
- &newtv, &rem) == FAIL || did_emsg)
+ &newtv, &rem) == FAIL)
break;
+ if (did_emsg)
+ {
+ clear_tv(&newtv);
+ break;
+ }
if (filtermap == FILTERMAP_MAP)
{
// map(): replace the list item value
diff --git a/src/version.c b/src/version.c
index 8cf37f0ad..91477bcef 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1971,
+/**/
1970,
/**/
1969,