aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2017-04-16 20:02:06 +0300
committerZyX <kp-pav@yandex.ru>2017-04-16 20:02:06 +0300
commit7c9e3d6cadb441aaa40c8539de41e302228196a9 (patch)
tree3ccb20d4353d5257d4cd3da6cb4cda81ec2e197e
parent97a1ccf8e7470d8c781c86253f8a7795fe50dc50 (diff)
downloadrneovim-7c9e3d6cadb441aaa40c8539de41e302228196a9.tar.gz
rneovim-7c9e3d6cadb441aaa40c8539de41e302228196a9.tar.bz2
rneovim-7c9e3d6cadb441aaa40c8539de41e302228196a9.zip
eval: Refactor f_char2nr
With has_mbyte equal to 1 and &encoding always UTF-8 second argument is no longer useful: utf_ptr2char is the same as mb_ptr2char. Also changes function behaviour a bit: now if second argument is not a number it immediately returns with error, without bothering to get a character.
-rw-r--r--src/nvim/eval.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 4cc400799d..bfc9f6eaa6 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -7305,18 +7305,14 @@ static void f_changenr(typval_T *argvars, typval_T *rettv, FunPtr fptr)
*/
static void f_char2nr(typval_T *argvars, typval_T *rettv, FunPtr fptr)
{
- if (has_mbyte) {
- int utf8 = 0;
-
- if (argvars[1].v_type != VAR_UNKNOWN) {
- utf8 = tv_get_number_chk(&argvars[1], NULL);
+ if (argvars[1].v_type != VAR_UNKNOWN) {
+ if (!tv_check_num(&argvars[1])) {
+ return;
}
-
- rettv->vval.v_number = (utf8 ? *utf_ptr2char : *mb_ptr2char)(
- (const char_u *)tv_get_string(&argvars[0]));
- } else {
- rettv->vval.v_number = (uint8_t)(tv_get_string(&argvars[0])[0]);
}
+
+ rettv->vval.v_number = utf_ptr2char(
+ (const char_u *)tv_get_string(&argvars[0]));
}
/*