Mercurial > vim
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 { |