From 86eddced7e2e15e4a51af2009ffaeca8028291be Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Tue, 26 Mar 2024 18:42:52 +0100 Subject: [PATCH] patch 9.1.0209: leaking memory in exe_newdict() on error 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 --- src/version.c | 2 ++ src/vim9execute.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/version.c b/src/version.c index a9515d6893..2061fec42e 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 209, /**/ 208, /**/ 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);