Mercurial > vim
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; |