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);