Mercurial > vim
comparison src/strings.c @ 32381:8b7ba5c63996 v9.0.1522
patch 9.0.1522: some functions give two error messages
Commit: https://github.com/vim/vim/commit/e4098457ab9c94225b1b0e3c5e06b82b75587971
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun May 7 18:53:49 2023 +0100
patch 9.0.1522: some functions give two error messages
Problem: Some functions give two error messages.
Solution: Do not give a second error message. (closes https://github.com/vim/vim/issues/12352)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 07 May 2023 20:00:03 +0200 |
parents | d5e673b941cd |
children | 49a13ac4a1b1 |
comparison
equal
deleted
inserted
replaced
32380:a8b5d3012377 | 32381:8b7ba5c63996 |
---|---|
1042 | 1042 |
1043 if (fc != NULL) | 1043 if (fc != NULL) |
1044 remove_funccal(); | 1044 remove_funccal(); |
1045 } | 1045 } |
1046 | 1046 |
1047 /* | |
1048 * Implementation of "byteidx()" and "byteidxcomp()" functions | |
1049 */ | |
1047 static void | 1050 static void |
1048 byteidx(typval_T *argvars, typval_T *rettv, int comp UNUSED) | 1051 byteidx_common(typval_T *argvars, typval_T *rettv, int comp UNUSED) |
1049 { | 1052 { |
1050 rettv->vval.v_number = -1; | 1053 rettv->vval.v_number = -1; |
1051 | 1054 |
1052 if (in_vim9script() | 1055 if (in_vim9script() |
1053 && (check_for_string_arg(argvars, 0) == FAIL | 1056 && (check_for_string_arg(argvars, 0) == FAIL |
1063 if (argvars[2].v_type != VAR_UNKNOWN) | 1066 if (argvars[2].v_type != VAR_UNKNOWN) |
1064 { | 1067 { |
1065 utf16idx = tv_get_bool(&argvars[2]); | 1068 utf16idx = tv_get_bool(&argvars[2]); |
1066 if (utf16idx < 0 || utf16idx > 1) | 1069 if (utf16idx < 0 || utf16idx > 1) |
1067 { | 1070 { |
1068 semsg(_(e_using_number_as_bool_nr), utf16idx); | 1071 if (utf16idx != -1) |
1072 semsg(_(e_using_number_as_bool_nr), utf16idx); | |
1069 return; | 1073 return; |
1070 } | 1074 } |
1071 } | 1075 } |
1072 | 1076 |
1073 int (*ptr2len)(char_u *); | 1077 int (*ptr2len)(char_u *); |
1098 * "byteidx()" function | 1102 * "byteidx()" function |
1099 */ | 1103 */ |
1100 void | 1104 void |
1101 f_byteidx(typval_T *argvars, typval_T *rettv) | 1105 f_byteidx(typval_T *argvars, typval_T *rettv) |
1102 { | 1106 { |
1103 byteidx(argvars, rettv, FALSE); | 1107 byteidx_common(argvars, rettv, FALSE); |
1104 } | 1108 } |
1105 | 1109 |
1106 /* | 1110 /* |
1107 * "byteidxcomp()" function | 1111 * "byteidxcomp()" function |
1108 */ | 1112 */ |
1109 void | 1113 void |
1110 f_byteidxcomp(typval_T *argvars, typval_T *rettv) | 1114 f_byteidxcomp(typval_T *argvars, typval_T *rettv) |
1111 { | 1115 { |
1112 byteidx(argvars, rettv, TRUE); | 1116 byteidx_common(argvars, rettv, TRUE); |
1113 } | 1117 } |
1114 | 1118 |
1115 /* | 1119 /* |
1116 * "charidx()" function | 1120 * "charidx()" function |
1117 */ | 1121 */ |
1417 return; | 1421 return; |
1418 | 1422 |
1419 if (argvars[1].v_type != VAR_UNKNOWN) | 1423 if (argvars[1].v_type != VAR_UNKNOWN) |
1420 skipcc = tv_get_bool(&argvars[1]); | 1424 skipcc = tv_get_bool(&argvars[1]); |
1421 if (skipcc < 0 || skipcc > 1) | 1425 if (skipcc < 0 || skipcc > 1) |
1422 semsg(_(e_using_number_as_bool_nr), skipcc); | 1426 { |
1427 if (skipcc != -1) | |
1428 semsg(_(e_using_number_as_bool_nr), skipcc); | |
1429 } | |
1423 else | 1430 else |
1424 strchar_common(argvars, rettv, skipcc); | 1431 strchar_common(argvars, rettv, skipcc); |
1425 } | 1432 } |
1426 | 1433 |
1427 /* | 1434 /* |
1527 && argvars[3].v_type != VAR_UNKNOWN) | 1534 && argvars[3].v_type != VAR_UNKNOWN) |
1528 { | 1535 { |
1529 skipcc = tv_get_bool(&argvars[3]); | 1536 skipcc = tv_get_bool(&argvars[3]); |
1530 if (skipcc < 0 || skipcc > 1) | 1537 if (skipcc < 0 || skipcc > 1) |
1531 { | 1538 { |
1532 semsg(_(e_using_number_as_bool_nr), skipcc); | 1539 if (skipcc != -1) |
1540 semsg(_(e_using_number_as_bool_nr), skipcc); | |
1533 return; | 1541 return; |
1534 } | 1542 } |
1535 } | 1543 } |
1536 | 1544 |
1537 if (nchar > 0) | 1545 if (nchar > 0) |