mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.2.2572: Vim9: crash when getting the types for a legacy function
Problem: Vim9: crash when getting the types for a legacy function. Solution: Initialize the type list growarray. (closes #7929)
This commit is contained in:
@@ -739,6 +739,19 @@ def Test_lambda_uses_assigned_var()
|
|||||||
'x = filter(["bbb"], (_, v) => v =~ x)'])
|
'x = filter(["bbb"], (_, v) => v =~ x)'])
|
||||||
enddef
|
enddef
|
||||||
|
|
||||||
|
def Test_pass_legacy_lambda_to_def_func()
|
||||||
|
var lines =<< trim END
|
||||||
|
vim9script
|
||||||
|
func Foo()
|
||||||
|
eval s:Bar({x -> 0})
|
||||||
|
endfunc
|
||||||
|
def Bar(y: any)
|
||||||
|
enddef
|
||||||
|
Foo()
|
||||||
|
END
|
||||||
|
CheckScriptSuccess(lines)
|
||||||
|
enddef
|
||||||
|
|
||||||
" Default arg and varargs
|
" Default arg and varargs
|
||||||
def MyDefVarargs(one: string, two = 'foo', ...rest: list<string>): string
|
def MyDefVarargs(one: string, two = 'foo', ...rest: list<string>): string
|
||||||
var res = one .. ',' .. two
|
var res = one .. ',' .. two
|
||||||
|
@@ -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 */
|
||||||
|
/**/
|
||||||
|
2572,
|
||||||
/**/
|
/**/
|
||||||
2571,
|
2571,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -274,7 +274,7 @@ arg_exists(
|
|||||||
* Lookup a script-local variable in the current script, possibly defined in a
|
* Lookup a script-local variable in the current script, possibly defined in a
|
||||||
* block that contains the function "cctx->ctx_ufunc".
|
* block that contains the function "cctx->ctx_ufunc".
|
||||||
* "cctx" is NULL at the script level.
|
* "cctx" is NULL at the script level.
|
||||||
* if "len" is <= 0 "name" must be NUL terminated.
|
* If "len" is <= 0 "name" must be NUL terminated.
|
||||||
* Return NULL when not found.
|
* Return NULL when not found.
|
||||||
*/
|
*/
|
||||||
static sallvar_T *
|
static sallvar_T *
|
||||||
@@ -8730,6 +8730,8 @@ set_function_type(ufunc_T *ufunc)
|
|||||||
// The type is included in "tt_args".
|
// The type is included in "tt_args".
|
||||||
if (argcount > 0 || varargs)
|
if (argcount > 0 || varargs)
|
||||||
{
|
{
|
||||||
|
if (ufunc->uf_type_list.ga_itemsize == 0)
|
||||||
|
ga_init2(&ufunc->uf_type_list, sizeof(type_T *), 10);
|
||||||
ufunc->uf_func_type = alloc_func_type(ufunc->uf_ret_type,
|
ufunc->uf_func_type = alloc_func_type(ufunc->uf_ret_type,
|
||||||
argcount, &ufunc->uf_type_list);
|
argcount, &ufunc->uf_type_list);
|
||||||
// Add argument types to the function type.
|
// Add argument types to the function type.
|
||||||
|
Reference in New Issue
Block a user