From f6f77272b3233ea2926e2d7fb2c007e381a85ea1 Mon Sep 17 00:00:00 2001 From: Michael Ennen Date: Sun, 23 Oct 2016 17:10:14 -0700 Subject: vim-patch:7.4.1782 Problem: strcharpart() does not work properly with some multi-byte characters. Solution: Use mb_cptr2len() instead of mb_char2len(). (Hirohito Higashi) https://github.com/vim/vim/commit/fca66003053f8c0da5161d1fe4b75b3a389934b5 --- src/nvim/eval.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/nvim/eval.c') diff --git a/src/nvim/eval.c b/src/nvim/eval.c index a9079c5519..4eb3b36464 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -15762,7 +15762,7 @@ static void f_strcharpart(typval_T *argvars, typval_T *rettv, FunPtr fptr) { if (!error) { if (nchar > 0) { while (nchar > 0 && nbyte < slen) { - nbyte += mb_char2len(p[nbyte]); + nbyte += mb_cptr2len(p + nbyte); nchar--; } } else { @@ -15777,9 +15777,9 @@ static void f_strcharpart(typval_T *argvars, typval_T *rettv, FunPtr fptr) { if (off < 0) { len += 1; } else { - len += mb_char2len(p[off]); - charlen--; + len += mb_cptr2len(p + off); } + charlen--; } } else { len = slen - nbyte; // default: all bytes that are available. -- cgit