Mercurial > vim
changeset 4466:4ff8fa416a0d v7.3.981
updated for version 7.3.981
Problem: In the old regexp engine \i, \I, \f and \F don't work on
multi-byte characters.
Solution: Dereference pointer properly.
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Tue, 21 May 2013 00:03:02 +0200 |
parents | bf405e5aabf6 |
children | 6ea4431f7939 |
files | src/regexp.c src/testdir/test64.in src/testdir/test64.ok src/version.c |
diffstat | 4 files changed, 12 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/regexp.c +++ b/src/regexp.c @@ -5758,7 +5758,7 @@ regrepeat(p, maxcount) case SIDENT + ADD_NL: while (count < maxcount) { - if (vim_isIDc(*scan) && (testval || !VIM_ISDIGIT(*scan))) + if (vim_isIDc(PTR2CHAR(scan)) && (testval || !VIM_ISDIGIT(*scan))) { mb_ptr_adv(scan); } @@ -5819,7 +5819,7 @@ regrepeat(p, maxcount) case SFNAME + ADD_NL: while (count < maxcount) { - if (vim_isfilec(*scan) && (testval || !VIM_ISDIGIT(*scan))) + if (vim_isfilec(PTR2CHAR(scan)) && (testval || !VIM_ISDIGIT(*scan))) { mb_ptr_adv(scan); }
--- a/src/testdir/test64.in +++ b/src/testdir/test64.in @@ -262,6 +262,10 @@ STARTTEST :call add(tl, ['[a-zA-Z]', 'a', 'a']) :call add(tl, ['[A-Z]', 'a']) :call add(tl, ['\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa']) +:call add(tl, ['\i\+', '&*§xx ', 'xx']) +:call add(tl, ['\%#=1\i\+', '&*§xx ', 'xx']) +:call add(tl, ['\f\+', '&*fname ', 'fname']) +:call add(tl, ['\%#=1\i\+', '&*fname ', 'fname']) :"""" Tests for \z features :call add(tl, ['xx \ze test', 'xx ']) " must match after \ze