0
0
mirror of https://github.com/vim/vim.git synced 2025-10-03 05:14:07 -04:00

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.
This commit is contained in:
Bram Moolenaar
2020-08-01 00:03:09 +02:00
parent ce6583568f
commit af8edbb8dc
3 changed files with 21 additions and 18 deletions

View File

@@ -133,6 +133,12 @@ def Test_nested_function()
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 @@ def Test_nested_global_function()
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