summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-10-18 23:32:13 +0200
committerBram Moolenaar <Bram@vim.org>2020-10-18 23:32:13 +0200
commit2ea79ad83584f5d668adfb935be67ee0e0e9995b (patch)
treed4b994fc48309cfb9bfafd0169a46ac39e36ea3d
parenta2c026d0fd470d68d679616fddfc285cb4834412 (diff)
downloadvim-git-2ea79ad83584f5d668adfb935be67ee0e0e9995b.tar.gz
patch 8.2.1862: vim9: memory leak when compiling lambda failsv8.2.1862
Problem: vim9: memory leak when compiling lambda fails. Solution: Call clear_evalarg().
-rw-r--r--src/version.c2
-rw-r--r--src/vim9compile.c3
2 files changed, 5 insertions, 0 deletions
diff --git a/src/version.c b/src/version.c
index 5a5344315..2e6bb9833 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 */
/**/
+ 1862,
+/**/
1861,
/**/
1860,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index edfa32566..55368d1b5 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -2692,7 +2692,10 @@ compile_lambda(char_u **arg, cctx_T *cctx)
// Get the funcref in "rettv".
if (get_lambda_tv(arg, &rettv, &evalarg) != OK)
+ {
+ clear_evalarg(&evalarg, NULL);
return FAIL;
+ }
ufunc = rettv.vval.v_partial->pt_func;
++ufunc->uf_refcount;