forked from aniani/vim
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Problem: Vim9: crash when compiled with EXITFREE. Solution: Check that df_ufunc is not NULL.
This commit is contained in:
parent
032a2d050b
commit
077a42318c
@ -2011,5 +2011,27 @@ def Test_opfunc()
|
|||||||
nunmap <F3>
|
nunmap <F3>
|
||||||
enddef
|
enddef
|
||||||
|
|
||||||
|
" this was crashing on exit
|
||||||
|
def Test_nested_lambda_in_closure()
|
||||||
|
var lines =<< trim END
|
||||||
|
vim9script
|
||||||
|
def Outer()
|
||||||
|
def g:Inner()
|
||||||
|
echo map([1, 2, 3], {_, v -> v + 1})
|
||||||
|
enddef
|
||||||
|
g:Inner()
|
||||||
|
enddef
|
||||||
|
defcompile
|
||||||
|
writefile(['Done'], 'XnestedDone')
|
||||||
|
quit
|
||||||
|
END
|
||||||
|
if !RunVim([], lines, '--clean')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
assert_equal(['Done'], readfile('XnestedDone'))
|
||||||
|
delete('XnestedDone')
|
||||||
|
enddef
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
|
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
|
||||||
|
@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
2190,
|
||||||
/**/
|
/**/
|
||||||
2189,
|
2189,
|
||||||
/**/
|
/**/
|
||||||
|
@ -8081,9 +8081,10 @@ delete_instr(isn_T *isn)
|
|||||||
{
|
{
|
||||||
dfunc_T *dfunc = ((dfunc_T *)def_functions.ga_data)
|
dfunc_T *dfunc = ((dfunc_T *)def_functions.ga_data)
|
||||||
+ isn->isn_arg.funcref.fr_func;
|
+ isn->isn_arg.funcref.fr_func;
|
||||||
|
ufunc_T *ufunc = dfunc->df_ufunc;
|
||||||
|
|
||||||
if (func_name_refcount(dfunc->df_ufunc->uf_name))
|
if (ufunc != NULL && func_name_refcount(ufunc->uf_name))
|
||||||
func_ptr_unref(dfunc->df_ufunc);
|
func_ptr_unref(ufunc);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user