diff options
Diffstat (limited to 'src/vim9execute.c')
-rw-r--r-- | src/vim9execute.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/vim9execute.c b/src/vim9execute.c index d357fc42c5..882b13c61a 100644 --- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -398,6 +398,9 @@ check_ufunc_arg_types(ufunc_T *ufunc, int argcount, int off, ectx_T *ectx) if (argv[i].v_type == VAR_SPECIAL && argv[i].vval.v_number == VVAL_NONE) continue; + // only pass values to user functions, never types + if (check_typval_is_value(&argv[i]) == FAIL) + return FAIL; if (i < ufunc->uf_args.ga_len && ufunc->uf_arg_types != NULL) type = ufunc->uf_arg_types[i]; @@ -4462,6 +4465,12 @@ exec_instructions(ectx_T *ectx) garray_T *trystack = &ectx->ec_trystack; trycmd_T *trycmd = NULL; + /////////////////////////////////////////////////// + // TODO: If FAIL, line number in output not correct + /////////////////////////////////////////////////// + if (check_typval_is_value(STACK_TV_BOT(-1)) == FAIL) + goto theend; + if (trystack->ga_len > 0) trycmd = ((trycmd_T *)trystack->ga_data) + trystack->ga_len - 1; |