Mercurial > vim
diff src/vim9execute.c @ 24325:52a0e187264b v8.2.2703
patch 8.2.2703: Vim9: memory leak when failing on locked variable
Commit: https://github.com/vim/vim/commit/6e50ec2f0af85940e40ed3f897bfcfa445adbb0e
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Apr 3 19:32:44 2021 +0200
patch 8.2.2703: Vim9: memory leak when failing on locked variable
Problem: Vim9: memory leak when failing on locked variable.
Solution: Free the memory.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 03 Apr 2021 19:45:03 +0200 |
parents | c88d0b5c5a42 |
children | 236e9ebdb30e |
line wrap: on
line diff
--- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -1944,7 +1944,10 @@ call_def_function( { SOURCING_LNUM = iptr->isn_lnum; if (var_check_permission(di, name) == FAIL) + { + clear_tv(STACK_TV_BOT(0)); goto on_error; + } clear_tv(&di->di_tv); di->di_tv = *STACK_TV_BOT(0); } @@ -1966,7 +1969,10 @@ call_def_function( // the value needs to be checked here. SOURCING_LNUM = iptr->isn_lnum; if (value_check_lock(sv->sv_tv->v_lock, sv->sv_name, FALSE)) + { + clear_tv(STACK_TV_BOT(0)); goto on_error; + } clear_tv(sv->sv_tv); *sv->sv_tv = *STACK_TV_BOT(0);