1
0
forked from aniani/vim

patch 8.2.4309: Vim9: crash when using a partial in the wrong context

Problem:    Vim9: crash when using a partial in the wrong context.
Solution:   Don't use an NULL outer pointer. (closes #9706)
This commit is contained in:
Bram Moolenaar
2022-02-06 13:55:03 +00:00
parent 8164f6ea3c
commit fe1bfc9b26
3 changed files with 40 additions and 5 deletions

View File

@@ -3125,6 +3125,35 @@ def Test_partial_call()
v9.CheckScriptFailure(lines, 'E1235:')
enddef
" Using "idx" from a legacy global function does not work.
" This caused a crash when called from legacy context.
func Test_partial_call_fails()
let lines =<< trim END
vim9script
var l = ['a', 'b', 'c']
def Iter(container: any): any
var idx = -1
var obj = {state: container}
def g:__NextItem__(self: dict<any>): any
++idx
return self.state[idx]
enddef
obj.__next__ = function('g:__NextItem__', [obj])
return obj
enddef
var it = Iter(l)
echo it.__next__()
END
call writefile(lines, 'XpartialCall')
try
source XpartialCall
catch /E1248:/
endtry
call delete('XpartialCall')
endfunc
def Test_cmd_modifier()
tab echo '0'
v9.CheckDefFailure(['5tab echo 3'], 'E16:')