0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.2.3945: Vim9: partial variable argument types are wrong

Problem:    Vim9: partial variable argument types are wrong, leading to a
            crash.
Solution:   When adjusting the argument count also adjust the argument types.
            (closes #9433)
This commit is contained in:
Bram Moolenaar
2021-12-30 13:29:00 +00:00
parent 5d2e007ccb
commit 13789bf103
4 changed files with 53 additions and 0 deletions

View File

@@ -371,6 +371,18 @@ typval2type_int(typval_T *tv, int copyID, garray_T *type_gap, int do_member)
*type = *ufunc->uf_func_type;
type->tt_argcount -= tv->vval.v_partial->pt_argc;
type->tt_min_argcount -= tv->vval.v_partial->pt_argc;
if (type->tt_argcount == 0)
type->tt_args = NULL;
else
{
int i;
func_type_add_arg_types(type, type->tt_argcount,
type_gap);
for (i = 0; i < type->tt_argcount; ++i)
type->tt_args[i] = ufunc->uf_func_type->tt_args[
i + tv->vval.v_partial->pt_argc];
}
return type;
}
return ufunc->uf_func_type;
@@ -464,6 +476,9 @@ check_typval_type(type_T *expected, typval_T *actual_tv, where_T where)
type_T *actual_type;
int res = FAIL;
if (expected == NULL)
return OK; // didn't expect anything.
// For some values there is no type, assume an error will be given later
// for an invalid value.
if ((actual_tv->v_type == VAR_FUNC && actual_tv->vval.v_string == NULL)