patch 8.2.1333: Vim9: memory leak when using nested global function
Problem: Vim9: memory leak when using nested global function.
Solution: Swap from and to when copying the lines.
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 28937a1..7298d9a 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -133,6 +133,12 @@
CheckDefFailure(['func Nested()', 'endfunc'], 'E1086:')
enddef
+func Test_call_default_args_from_func()
+ call assert_equal('string', MyDefaultArgs())
+ call assert_equal('one', MyDefaultArgs('one'))
+ call assert_fails('call MyDefaultArgs("one", "two")', 'E118:')
+endfunc
+
def Test_nested_global_function()
let lines =<< trim END
vim9script
@@ -141,25 +147,20 @@
return 'inner'
enddef
enddef
-# Outer()
-# assert_equal('inner', g:Inner())
-# delfunc g:Inner
-# Outer()
-# assert_equal('inner', g:Inner())
-# delfunc g:Inner
-# Outer()
-# assert_equal('inner', g:Inner())
-# delfunc g:Inner
+ defcompile
+ Outer()
+ assert_equal('inner', g:Inner())
+ delfunc g:Inner
+ Outer()
+ assert_equal('inner', g:Inner())
+ delfunc g:Inner
+ Outer()
+ assert_equal('inner', g:Inner())
+ delfunc g:Inner
END
CheckScriptSuccess(lines)
enddef
-func Test_call_default_args_from_func()
- call assert_equal('string', MyDefaultArgs())
- call assert_equal('one', MyDefaultArgs('one'))
- call assert_fails('call MyDefaultArgs("one", "two")', 'E118:')
-endfunc
-
func TakesOneArg(arg)
echo a:arg
endfunc