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.
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index 867afaf..0b1d5fc 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -1323,6 +1323,7 @@
   unlet g:var_test
   unlet g:var_prefixed
   unlet g:other_var
+  unlet g:globConst
   unlet g:FOO
   unlet g:FOOS
   unlet g:FLIST
@@ -1375,7 +1376,7 @@
     SetGlobalConst()
     g:globConst = 234
   END
-  CheckScriptFailure(lines, 'E741: Value is locked: globConst', 1)
+  CheckScriptFailure(lines, 'E741: Value is locked: g:globConst', 6)
   unlet g:globConst
 
   lines =<< trim END
diff --git a/src/version.c b/src/version.c
index 5a5f73f..812b1e5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2703,
+/**/
     2702,
 /**/
     2701,
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 81041bb..6e011ba 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -1944,7 +1944,10 @@
 		    {
 			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 @@
 		    // 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);