# HG changeset patch # User Bram Moolenaar # Date 1672496102 -3600 # Node ID fc9ce07dc8a474c02131c8d7eda94710f3bd197d # Parent d16bf8370f60eac8e3861c1bf18438af2eb4c871 patch 9.0.1119: type of arguments not checked when calling a partial Commit: https://github.com/vim/vim/commit/0d89d8ae89c861572496c5ae9683d986b28c957b Author: Bram Moolenaar Date: Sat Dec 31 14:01:24 2022 +0000 patch 9.0.1119: type of arguments not checked when calling a partial Problem: Type of arguments not checked when calling a partial. Solution: Give an error for a wrong argument type. (closes https://github.com/vim/vim/issues/11753) diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index 0edf7eab713ca2837cb4438f3784e52757bf6a67..3840d1144f93cc80208496d1b689c34611db0f37 GIT binary patch literal 102784 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 i?$gw2{#4VqYluS#a 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 diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1119, +/**/ 1118, /**/ 1117, diff --git a/src/vim9execute.c b/src/vim9execute.c --- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -377,6 +377,41 @@ get_pt_outer(partial_T *pt) } /* + * Check "argcount" arguments on the stack against what "ufunc" expects. + * "off" is the offset of arguments on the stack. + * Return OK or FAIL. + */ + static int +check_ufunc_arg_types(ufunc_T *ufunc, int argcount, int off, ectx_T *ectx) +{ + if (ufunc->uf_arg_types != NULL || ufunc->uf_va_type != NULL) + { + typval_T *argv = STACK_TV_BOT(0) - argcount - off; + + // The function can change at runtime, check that the argument + // types are correct. + for (int i = 0; i < argcount; ++i) + { + type_T *type = NULL; + + // assume a v:none argument, using the default value, is always OK + if (argv[i].v_type == VAR_SPECIAL + && argv[i].vval.v_number == VVAL_NONE) + continue; + + if (i < ufunc->uf_args.ga_len && ufunc->uf_arg_types != NULL) + type = ufunc->uf_arg_types[i]; + else if (ufunc->uf_va_type != NULL) + type = ufunc->uf_va_type->tt_member; + if (type != NULL && check_typval_arg_type(type, + &argv[i], NULL, i + 1) == FAIL) + return FAIL; + } + } + return OK; +} + +/* * Call compiled function "cdf_idx" from compiled code. * This adds a stack frame and sets the instruction pointer to the start of the * called function. @@ -498,6 +533,10 @@ call_dfunc( return FAIL; } + // Check the argument types. + if (check_ufunc_arg_types(ufunc, argcount, vararg_count, ectx) == FAIL) + return FAIL; + // Reserve space for: // - missing arguments // - stack frame @@ -1345,26 +1384,8 @@ call_by_name( if (ufunc != NULL) { - if (ufunc->uf_arg_types != NULL || ufunc->uf_va_type != NULL) - { - int i; - typval_T *argv = STACK_TV_BOT(0) - argcount; - - // The function can change at runtime, check that the argument - // types are correct. - for (i = 0; i < argcount; ++i) - { - type_T *type = NULL; - - if (i < ufunc->uf_args.ga_len && ufunc->uf_arg_types != NULL) - type = ufunc->uf_arg_types[i]; - else if (ufunc->uf_va_type != NULL) - type = ufunc->uf_va_type->tt_member; - if (type != NULL && check_typval_arg_type(type, - &argv[i], NULL, i + 1) == FAIL) - return FAIL; - } - } + if (check_ufunc_arg_types(ufunc, argcount, 0, ectx) == FAIL) + return FAIL; return call_ufunc(ufunc, NULL, argcount, ectx, iptr, selfdict); }