1
0
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:
Bram Moolenaar 2020-12-22 18:33:27 +01:00
parent 032a2d050b
commit 077a42318c
3 changed files with 27 additions and 2 deletions

View File

@ -2011,5 +2011,27 @@ def Test_opfunc()
nunmap <F3>
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

View File

@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2190,
/**/
2189,
/**/

View File

@ -8081,9 +8081,10 @@ delete_instr(isn_T *isn)
{
dfunc_T *dfunc = ((dfunc_T *)def_functions.ga_data)
+ isn->isn_arg.funcref.fr_func;
ufunc_T *ufunc = dfunc->df_ufunc;
if (func_name_refcount(dfunc->df_ufunc->uf_name))
func_ptr_unref(dfunc->df_ufunc);
if (ufunc != NULL && func_name_refcount(ufunc->uf_name))
func_ptr_unref(ufunc);
}
break;