comparison src/evalfunc.c @ 25759:ea0820d05257 v8.2.3415

patch 8.2.3415: Vim9: not all function argument types are properly checked Commit: https://github.com/vim/vim/commit/fc3b775055c2361e507a1a44008d5a7d37eecf14 Author: Yegappan Lakshmanan <yegappan@yahoo.com> Date: Wed Sep 8 14:57:42 2021 +0200 patch 8.2.3415: Vim9: not all function argument types are properly checked Problem: Vim9: Not all function argument types are properly checked. Solution: Add and improve argument type checks. (Yegappan Lakshmanan, closes #8839)
author Bram Moolenaar <Bram@vim.org>
date Wed, 08 Sep 2021 15:00:05 +0200
parents f35efe44dacd
children 8d55e978f95b
comparison
equal deleted inserted replaced
25758:fe9fee93ea71 25759:ea0820d05257
1303 ret_number, f_diff_filler}, 1303 ret_number, f_diff_filler},
1304 {"diff_hlID", 2, 2, FEARG_1, arg2_lnum_number, 1304 {"diff_hlID", 2, 2, FEARG_1, arg2_lnum_number,
1305 ret_number, f_diff_hlID}, 1305 ret_number, f_diff_hlID},
1306 {"digraph_get", 1, 1, FEARG_1, arg1_string, 1306 {"digraph_get", 1, 1, FEARG_1, arg1_string,
1307 ret_string, f_digraph_get}, 1307 ret_string, f_digraph_get},
1308 {"digraph_getlist",0, 1, FEARG_1, arg1_number, 1308 {"digraph_getlist",0, 1, FEARG_1, arg1_bool,
1309 ret_list_string_items, f_digraph_getlist}, 1309 ret_list_string_items, f_digraph_getlist},
1310 {"digraph_set", 2, 2, FEARG_1, arg2_string_number, 1310 {"digraph_set", 2, 2, FEARG_1, arg2_string,
1311 ret_bool, f_digraph_set}, 1311 ret_bool, f_digraph_set},
1312 {"digraph_setlist",1, 1, FEARG_1, arg1_list_string, 1312 {"digraph_setlist",1, 1, FEARG_1, arg1_list_string,
1313 ret_bool, f_digraph_setlist}, 1313 ret_bool, f_digraph_setlist},
1314 {"echoraw", 1, 1, FEARG_1, arg1_string, 1314 {"echoraw", 1, 1, FEARG_1, arg1_string,
1315 ret_void, f_echoraw}, 1315 ret_void, f_echoraw},
2952 message = tv_get_string_chk(&argvars[0]); 2952 message = tv_get_string_chk(&argvars[0]);
2953 if (message == NULL) 2953 if (message == NULL)
2954 error = TRUE; 2954 error = TRUE;
2955 if (argvars[1].v_type != VAR_UNKNOWN) 2955 if (argvars[1].v_type != VAR_UNKNOWN)
2956 { 2956 {
2957 if (in_vim9script() && check_for_string_arg(argvars, 1) == FAIL)
2958 return;
2959 buttons = tv_get_string_buf_chk(&argvars[1], buf); 2957 buttons = tv_get_string_buf_chk(&argvars[1], buf);
2960 if (buttons == NULL) 2958 if (buttons == NULL)
2961 error = TRUE; 2959 error = TRUE;
2962 if (argvars[2].v_type != VAR_UNKNOWN) 2960 if (argvars[2].v_type != VAR_UNKNOWN)
2963 { 2961 {
2964 def = (int)tv_get_number_chk(&argvars[2], &error); 2962 def = (int)tv_get_number_chk(&argvars[2], &error);
2965 if (argvars[3].v_type != VAR_UNKNOWN) 2963 if (argvars[3].v_type != VAR_UNKNOWN)
2966 { 2964 {
2967 if (in_vim9script() && check_for_string_arg(argvars, 3) == FAIL)
2968 return;
2969 typestr = tv_get_string_buf_chk(&argvars[3], buf2); 2965 typestr = tv_get_string_buf_chk(&argvars[3], buf2);
2970 if (typestr == NULL) 2966 if (typestr == NULL)
2971 error = TRUE; 2967 error = TRUE;
2972 else 2968 else
2973 { 2969 {