summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-11-21 11:45:50 +0100
committerBram Moolenaar <Bram@vim.org>2020-11-21 11:45:50 +0100
commitc71ee829efa948eefec3b8f0dbacf172fc1a4992 (patch)
treeddb7be7996ae83d8b5048ade69e3e892b8e099ed
parent95388e3179f6b995dbc4acd3f23e3856bb0286fd (diff)
downloadvim-git-c71ee829efa948eefec3b8f0dbacf172fc1a4992.tar.gz
patch 8.2.2023: Vim: memory leak when :execute failsv8.2.2023
Problem: Vim: memory leak when :execute fails. Solution: Clear the growarray.
-rw-r--r--src/version.c2
-rw-r--r--src/vim9execute.c6
2 files changed, 8 insertions, 0 deletions
diff --git a/src/version.c b/src/version.c
index 303ecb3ee..5996bd67f 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 */
/**/
+ 2023,
+/**/
2022,
/**/
2021,
diff --git a/src/vim9execute.c b/src/vim9execute.c
index eca99f3aa..f15424907 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -1200,7 +1200,10 @@ call_def_function(
}
ectx.ec_stack.ga_len -= count;
if (failed)
+ {
+ ga_clear(&ga);
goto on_error;
+ }
if (ga.ga_data != NULL)
{
@@ -1209,7 +1212,10 @@ call_def_function(
SOURCING_LNUM = iptr->isn_lnum;
do_cmdline_cmd((char_u *)ga.ga_data);
if (did_emsg)
+ {
+ ga_clear(&ga);
goto on_error;
+ }
}
else
{