Mercurial > vim
changeset 26839:eb6d56ab4858 v8.2.3948
patch 8.2.3948: Vim9: failure with partial with unknown argument count
Commit: https://github.com/vim/vim/commit/cfe3af284a26178f4838df7c7489b2a1edd4c3a1
Author: Bram Moolenaar <Bram@vim.org>
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.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 30 Dec 2021 15:00:05 +0100 |
parents | 01acdfb78d91 |
children | 1f49d1cd3100 |
files | src/version.c src/vim9type.c |
diffstat | 2 files changed, 14 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- 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,
--- 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; }