mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 03:18:16 +00:00
vim-patch:8.2.1624: Vim9: cannot pass "true" to split(), str2nr() and strchars()
Problem: Vim9: cannot pass "true" to split(), str2nr() and strchars().
Solution: Use tv_get_bool_chk(). (closes vim/vim#6884, closes vim/vim#6885, closes vim/vim#6886)
3986b94b09
Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
@@ -8162,7 +8162,7 @@ static void f_split(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|
|||||||
typeerr = true;
|
typeerr = true;
|
||||||
}
|
}
|
||||||
if (argvars[2].v_type != VAR_UNKNOWN) {
|
if (argvars[2].v_type != VAR_UNKNOWN) {
|
||||||
keepempty = (bool)tv_get_number_chk(&argvars[2], &typeerr);
|
keepempty = (bool)tv_get_bool_chk(&argvars[2], &typeerr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (pat == NULL || *pat == NUL) {
|
if (pat == NULL || *pat == NUL) {
|
||||||
@@ -8292,7 +8292,7 @@ static void f_str2nr(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|
|||||||
emsg(_(e_invarg));
|
emsg(_(e_invarg));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (argvars[2].v_type != VAR_UNKNOWN && tv_get_number(&argvars[2])) {
|
if (argvars[2].v_type != VAR_UNKNOWN && tv_get_bool(&argvars[2])) {
|
||||||
what |= STR2NR_QUOTE;
|
what |= STR2NR_QUOTE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8451,12 +8451,12 @@ static void f_strlen(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|
|||||||
static void f_strchars(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|
static void f_strchars(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|
||||||
{
|
{
|
||||||
const char *s = tv_get_string(&argvars[0]);
|
const char *s = tv_get_string(&argvars[0]);
|
||||||
int skipcc = 0;
|
int skipcc = false;
|
||||||
varnumber_T len = 0;
|
varnumber_T len = 0;
|
||||||
int (*func_mb_ptr2char_adv)(const char_u **pp);
|
int (*func_mb_ptr2char_adv)(const char_u **pp);
|
||||||
|
|
||||||
if (argvars[1].v_type != VAR_UNKNOWN) {
|
if (argvars[1].v_type != VAR_UNKNOWN) {
|
||||||
skipcc = (int)tv_get_number_chk(&argvars[1], NULL);
|
skipcc = (int)tv_get_bool(&argvars[1]);
|
||||||
}
|
}
|
||||||
if (skipcc < 0 || skipcc > 1) {
|
if (skipcc < 0 || skipcc > 1) {
|
||||||
semsg(_(e_using_number_as_bool_nr), skipcc);
|
semsg(_(e_using_number_as_bool_nr), skipcc);
|
||||||
|
Reference in New Issue
Block a user