# HG changeset patch # User Bram Moolenaar # Date 1640872805 -3600 # Node ID eb6d56ab48581ba31554ade5ecf7f520213ba04e # Parent 01acdfb78d91adda34af4268482a4121e515ee9e patch 8.2.3948: Vim9: failure with partial with unknown argument count Commit: https://github.com/vim/vim/commit/cfe3af284a26178f4838df7c7489b2a1edd4c3a1 Author: Bram Moolenaar Date: Thu Dec 30 13:59:20 2021 +0000 patch 8.2.3948: Vim9: failure with partial with unknown argument count Problem: Vim9: failure with partial with unknown argument count. Solution: Do not copy argument types if there aren't any. diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3948, +/**/ 3947, /**/ 3946, diff --git a/src/vim9type.c b/src/vim9type.c --- a/src/vim9type.c +++ b/src/vim9type.c @@ -369,19 +369,22 @@ typval2type_int(typval_T *tv, int copyID if (type == NULL) return NULL; *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 + if (type->tt_argcount >= 0) { - int i; + 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, + 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[ + 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; }