comparison src/vim9execute.c @ 34649:353ff4d1c039 v9.1.0209

patch 9.1.0209: leaking memory in exe_newdict() on error Commit: https://github.com/vim/vim/commit/86eddced7e2e15e4a51af2009ffaeca8028291be Author: Christian Brabandt <cb@256bit.org> Date: Tue Mar 26 18:42:52 2024 +0100 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 <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Tue, 26 Mar 2024 18:45:04 +0100
parents ab6a70fad5b5
children 5b25ec43f208
comparison
equal deleted inserted replaced
34648:3cc3eb9ff52d 34649:353ff4d1c039
258 } 258 }
259 259
260 if (count > 0) 260 if (count > 0)
261 ectx->ec_stack.ga_len -= 2 * count - 1; 261 ectx->ec_stack.ga_len -= 2 * count - 1;
262 else if (GA_GROW_FAILS(&ectx->ec_stack, 1)) 262 else if (GA_GROW_FAILS(&ectx->ec_stack, 1))
263 {
264 dict_unref(dict);
263 return FAIL; 265 return FAIL;
266 }
264 else 267 else
265 ++ectx->ec_stack.ga_len; 268 ++ectx->ec_stack.ga_len;
266 tv = STACK_TV_BOT(-1); 269 tv = STACK_TV_BOT(-1);
267 tv->v_type = VAR_DICT; 270 tv->v_type = VAR_DICT;
268 tv->v_lock = 0; 271 tv->v_lock = 0;