summaryrefslogtreecommitdiffstats
path: root/src/vim9execute.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vim9execute.c')
-rw-r--r--src/vim9execute.c9
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;