Mercurial > vim
comparison src/filepath.c @ 24246:35603c7991d7 v8.2.2664
patch 8.2.2664: Vim9: not enough function arguments checked for string
Commit: https://github.com/vim/vim/commit/32105ae88f3aa6a6af30336f0bc9f8eb81292cd7
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Mar 27 18:59:25 2021 +0100
patch 8.2.2664: Vim9: not enough function arguments checked for string
Problem: Vim9: not enough function arguments checked for string.
Solution: Check in balloon functions. Refactor function arguments.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 27 Mar 2021 19:00:04 +0100 |
parents | 083f07f99e20 |
children | 01b274c3f69b |
comparison
equal
deleted
inserted
replaced
24245:5e22bf689c9f | 24246:35603c7991d7 |
---|---|
859 * "executable()" function | 859 * "executable()" function |
860 */ | 860 */ |
861 void | 861 void |
862 f_executable(typval_T *argvars, typval_T *rettv) | 862 f_executable(typval_T *argvars, typval_T *rettv) |
863 { | 863 { |
864 if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL) | 864 if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) |
865 return; | 865 return; |
866 | 866 |
867 // Check in $PATH and also check directly if there is a directory name. | 867 // Check in $PATH and also check directly if there is a directory name. |
868 rettv->vval.v_number = mch_can_exe(tv_get_string(&argvars[0]), NULL, TRUE); | 868 rettv->vval.v_number = mch_can_exe(tv_get_string(&argvars[0]), NULL, TRUE); |
869 } | 869 } |
874 void | 874 void |
875 f_exepath(typval_T *argvars, typval_T *rettv) | 875 f_exepath(typval_T *argvars, typval_T *rettv) |
876 { | 876 { |
877 char_u *p = NULL; | 877 char_u *p = NULL; |
878 | 878 |
879 if (in_vim9script() && check_for_nonempty_string(&argvars[0], 1) == FAIL) | 879 if (in_vim9script() && check_for_nonempty_string_arg(argvars, 0) == FAIL) |
880 return; | 880 return; |
881 (void)mch_can_exe(tv_get_string(&argvars[0]), &p, TRUE); | 881 (void)mch_can_exe(tv_get_string(&argvars[0]), &p, TRUE); |
882 rettv->v_type = VAR_STRING; | 882 rettv->v_type = VAR_STRING; |
883 rettv->vval.v_string = p; | 883 rettv->vval.v_string = p; |
884 } | 884 } |
891 { | 891 { |
892 int fd; | 892 int fd; |
893 char_u *p; | 893 char_u *p; |
894 int n; | 894 int n; |
895 | 895 |
896 if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL) | 896 if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) |
897 return; | 897 return; |
898 #ifndef O_NONBLOCK | 898 #ifndef O_NONBLOCK |
899 # define O_NONBLOCK 0 | 899 # define O_NONBLOCK 0 |
900 #endif | 900 #endif |
901 p = tv_get_string(&argvars[0]); | 901 p = tv_get_string(&argvars[0]); |
916 * rights to write into. | 916 * rights to write into. |
917 */ | 917 */ |
918 void | 918 void |
919 f_filewritable(typval_T *argvars, typval_T *rettv) | 919 f_filewritable(typval_T *argvars, typval_T *rettv) |
920 { | 920 { |
921 if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL) | 921 if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) |
922 return; | 922 return; |
923 rettv->vval.v_number = filewritable(tv_get_string(&argvars[0])); | 923 rettv->vval.v_number = filewritable(tv_get_string(&argvars[0])); |
924 } | 924 } |
925 | 925 |
926 static void | 926 static void |
940 int error = FALSE; | 940 int error = FALSE; |
941 #endif | 941 #endif |
942 | 942 |
943 rettv->vval.v_string = NULL; | 943 rettv->vval.v_string = NULL; |
944 rettv->v_type = VAR_STRING; | 944 rettv->v_type = VAR_STRING; |
945 if (in_vim9script() && check_for_nonempty_string(&argvars[0], 1) == FAIL) | 945 if (in_vim9script() && check_for_nonempty_string_arg(argvars, 0) == FAIL) |
946 return; | 946 return; |
947 | 947 |
948 #ifdef FEAT_SEARCHPATH | 948 #ifdef FEAT_SEARCHPATH |
949 fname = tv_get_string(&argvars[0]); | 949 fname = tv_get_string(&argvars[0]); |
950 | 950 |
1021 int usedlen = 0; | 1021 int usedlen = 0; |
1022 int len = 0; | 1022 int len = 0; |
1023 char_u *fbuf = NULL; | 1023 char_u *fbuf = NULL; |
1024 char_u buf[NUMBUFLEN]; | 1024 char_u buf[NUMBUFLEN]; |
1025 | 1025 |
1026 if (in_vim9script() && (check_for_string(&argvars[0], 1) == FAIL | 1026 if (in_vim9script() && (check_for_string_arg(argvars, 0) == FAIL |
1027 || check_for_string(&argvars[1], 2) == FAIL)) | 1027 || check_for_string_arg(argvars, 1) == FAIL)) |
1028 return; | 1028 return; |
1029 fname = tv_get_string_chk(&argvars[0]); | 1029 fname = tv_get_string_chk(&argvars[0]); |
1030 mods = tv_get_string_buf_chk(&argvars[1], buf); | 1030 mods = tv_get_string_buf_chk(&argvars[1], buf); |
1031 if (mods == NULL || fname == NULL) | 1031 if (mods == NULL || fname == NULL) |
1032 fname = NULL; | 1032 fname = NULL; |
1133 char_u *fname; | 1133 char_u *fname; |
1134 stat_T st; | 1134 stat_T st; |
1135 char_u *perm = NULL; | 1135 char_u *perm = NULL; |
1136 char_u permbuf[] = "---------"; | 1136 char_u permbuf[] = "---------"; |
1137 | 1137 |
1138 if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL) | 1138 if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) |
1139 return; | 1139 return; |
1140 fname = tv_get_string(&argvars[0]); | 1140 fname = tv_get_string(&argvars[0]); |
1141 | 1141 |
1142 rettv->v_type = VAR_STRING; | 1142 rettv->v_type = VAR_STRING; |
1143 if (mch_stat((char *)fname, &st) >= 0) | 1143 if (mch_stat((char *)fname, &st) >= 0) |
1152 f_getfsize(typval_T *argvars, typval_T *rettv) | 1152 f_getfsize(typval_T *argvars, typval_T *rettv) |
1153 { | 1153 { |
1154 char_u *fname; | 1154 char_u *fname; |
1155 stat_T st; | 1155 stat_T st; |
1156 | 1156 |
1157 if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL) | 1157 if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) |
1158 return; | 1158 return; |
1159 | 1159 |
1160 fname = tv_get_string(&argvars[0]); | 1160 fname = tv_get_string(&argvars[0]); |
1161 if (mch_stat((char *)fname, &st) >= 0) | 1161 if (mch_stat((char *)fname, &st) >= 0) |
1162 { | 1162 { |
1182 f_getftime(typval_T *argvars, typval_T *rettv) | 1182 f_getftime(typval_T *argvars, typval_T *rettv) |
1183 { | 1183 { |
1184 char_u *fname; | 1184 char_u *fname; |
1185 stat_T st; | 1185 stat_T st; |
1186 | 1186 |
1187 if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL) | 1187 if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) |
1188 return; | 1188 return; |
1189 fname = tv_get_string(&argvars[0]); | 1189 fname = tv_get_string(&argvars[0]); |
1190 if (mch_stat((char *)fname, &st) >= 0) | 1190 if (mch_stat((char *)fname, &st) >= 0) |
1191 rettv->vval.v_number = (varnumber_T)st.st_mtime; | 1191 rettv->vval.v_number = (varnumber_T)st.st_mtime; |
1192 else | 1192 else |
1228 { | 1228 { |
1229 char_u *fname; | 1229 char_u *fname; |
1230 stat_T st; | 1230 stat_T st; |
1231 char_u *type = NULL; | 1231 char_u *type = NULL; |
1232 | 1232 |
1233 if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL) | 1233 if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) |
1234 return; | 1234 return; |
1235 fname = tv_get_string(&argvars[0]); | 1235 fname = tv_get_string(&argvars[0]); |
1236 | 1236 |
1237 rettv->v_type = VAR_STRING; | 1237 rettv->v_type = VAR_STRING; |
1238 if (mch_lstat((char *)fname, &st) >= 0) | 1238 if (mch_lstat((char *)fname, &st) >= 0) |
2409 char_u buf[NUMBUFLEN]; | 2409 char_u buf[NUMBUFLEN]; |
2410 char_u buf2[NUMBUFLEN]; | 2410 char_u buf2[NUMBUFLEN]; |
2411 int error = FALSE; | 2411 int error = FALSE; |
2412 | 2412 |
2413 if (in_vim9script() | 2413 if (in_vim9script() |
2414 && (check_for_string(&argvars[1], 2) == FAIL | 2414 && (check_for_string_arg(argvars, 1) == FAIL |
2415 || check_for_string(&argvars[2], 3) == FAIL | 2415 || check_for_string_arg(argvars, 2) == FAIL |
2416 || check_for_string(&argvars[3], 4) == FAIL)) | 2416 || check_for_string_arg(argvars, 3) == FAIL)) |
2417 return; | 2417 return; |
2418 save = (int)tv_get_number_chk(&argvars[0], &error); | 2418 save = (int)tv_get_number_chk(&argvars[0], &error); |
2419 title = tv_get_string_chk(&argvars[1]); | 2419 title = tv_get_string_chk(&argvars[1]); |
2420 initdir = tv_get_string_buf_chk(&argvars[2], buf); | 2420 initdir = tv_get_string_buf_chk(&argvars[2], buf); |
2421 defname = tv_get_string_buf_chk(&argvars[3], buf2); | 2421 defname = tv_get_string_buf_chk(&argvars[3], buf2); |