aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/mbyte.c6
-rw-r--r--src/nvim/testdir/test_functions.vim2
2 files changed, 4 insertions, 4 deletions
diff --git a/src/nvim/mbyte.c b/src/nvim/mbyte.c
index 378a08131d..53bbaab694 100644
--- a/src/nvim/mbyte.c
+++ b/src/nvim/mbyte.c
@@ -2861,10 +2861,8 @@ void f_setcellwidths(typval_T *argvars, typval_T *rettv, FunPtr fptr)
void f_charclass(typval_T *argvars, typval_T *rettv, FunPtr fptr)
{
- if (argvars[0].v_type != VAR_STRING
- || argvars[0].vval.v_string == NULL
- || *argvars[0].vval.v_string == NUL) {
- emsg(_(e_stringreq));
+ if (tv_check_for_string(&argvars[0]) == FAIL
+ || argvars[0].vval.v_string == NULL) {
return;
}
rettv->vval.v_number = mb_get_class((const char_u *)argvars[0].vval.v_string);
diff --git a/src/nvim/testdir/test_functions.vim b/src/nvim/testdir/test_functions.vim
index e0e0c1ca38..44b6f0373e 100644
--- a/src/nvim/testdir/test_functions.vim
+++ b/src/nvim/testdir/test_functions.vim
@@ -1774,6 +1774,8 @@ func Test_charclass()
call assert_equal(1, charclass('.'))
call assert_equal(2, charclass('x'))
call assert_equal(3, charclass("\u203c"))
+ " this used to crash vim
+ call assert_equal(0, "xxx"[-1]->charclass())
endfunc
func Test_eventhandler()