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)