diff options
Diffstat (limited to 'src/mbyte.c')
-rw-r--r-- | src/mbyte.c | 28 |
1 files changed, 4 insertions, 24 deletions
diff --git a/src/mbyte.c b/src/mbyte.c index 0427f0ce3c..d6d81c4c71 100644 --- a/src/mbyte.c +++ b/src/mbyte.c @@ -4188,32 +4188,12 @@ mb_copy_char(char_u **fp, char_u **tp) int mb_off_next(char_u *base, char_u *p) { - int i; - int j; + int head_off = (*mb_head_off)(base, p); - if (enc_utf8) - { - if (*p < 0x80) // be quick for ASCII - return 0; - - // Find the next character that isn't 10xx.xxxx - for (i = 0; (p[i] & 0xc0) == 0x80; ++i) - ; - if (i > 0) - { - // Check for illegal sequence. - for (j = 0; p - j > base; ++j) - if ((p[-j] & 0xc0) != 0x80) - break; - if (utf8len_tab[p[-j]] != i + j) - return 0; - } - return i; - } + if (head_off == 0) + return 0; - // Only need to check if we're on a trail byte, it doesn't matter if we - // want the offset to the next or current character. - return (*mb_head_off)(base, p); + return (*mb_ptr2len)(p - head_off) - head_off; } /* |