summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Brabandt <cb@256bit.org>2024-03-26 18:42:52 +0100
committerChristian Brabandt <cb@256bit.org>2024-03-26 18:42:52 +0100
commit86eddced7e2e15e4a51af2009ffaeca8028291be (patch)
tree54803065ad4c3c5c90294688ab1fa51cfbf9683d
parent65e580bd5610465bb6b9c1a546b7a8d00c76aa47 (diff)
patch 9.1.0209: leaking memory in exe_newdict() on errorv9.1.0209
Problem: leaking memory in exe_newdict() on error (LuMingYinDetect) Solution: free allocated dict if GA_GROW_FALIS() fixes: #14255 closes: #14281 Signed-off-by: Christian Brabandt <cb@256bit.org>
-rw-r--r--src/version.c2
-rw-r--r--src/vim9execute.c3
2 files changed, 5 insertions, 0 deletions
diff --git a/src/version.c b/src/version.c
index a9515d6893..2061fec42e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 209,
+/**/
208,
/**/
207,
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 1efed35283..3e6aed0815 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -260,7 +260,10 @@ exe_newdict(int count, ectx_T *ectx)
if (count > 0)
ectx->ec_stack.ga_len -= 2 * count - 1;
else if (GA_GROW_FAILS(&ectx->ec_stack, 1))
+ {
+ dict_unref(dict);
return FAIL;
+ }
else
++ectx->ec_stack.ga_len;
tv = STACK_TV_BOT(-1);