diff options
author | Bram Moolenaar <Bram@vim.org> | 2013-05-21 00:03:02 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2013-05-21 00:03:02 +0200 |
commit | 09ea9fcf3f0eef0e0f8f8552d856f8896749e846 (patch) | |
tree | 3c82bfddd0ebfc5c7563eb4b264e78d4f19b42fa | |
parent | 745fc029ba7541ac08b93bb2304a1a407e73336b (diff) | |
download | vim-git-09ea9fcf3f0eef0e0f8f8552d856f8896749e846.tar.gz |
updated for version 7.3.981v7.3.981
Problem: In the old regexp engine \i, \I, \f and \F don't work on
multi-byte characters.
Solution: Dereference pointer properly.
-rw-r--r-- | src/regexp.c | 4 | ||||
-rw-r--r-- | src/testdir/test64.in | 4 | ||||
-rw-r--r-- | src/testdir/test64.ok | 4 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 12 insertions, 2 deletions
diff --git a/src/regexp.c b/src/regexp.c index 60765d728..29b40813f 100644 --- 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); } diff --git a/src/testdir/test64.in b/src/testdir/test64.in index be7128286..37f263b75 100644 --- 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 diff --git a/src/testdir/test64.ok b/src/testdir/test64.ok index c315a23eb..e3f5657ed 100644 --- a/src/testdir/test64.ok +++ b/src/testdir/test64.ok @@ -203,6 +203,10 @@ OK - [a-z] OK - [a-zA-Z] OK - [A-Z] OK - \C[^A-Z]\+ +OK - \i\+ +OK - \%#=1\i\+ +OK - \f\+ +OK - \%#=1\i\+ OK - xx \ze test OK - abc\zeend OK - abc\zsdd diff --git a/src/version.c b/src/version.c index bef4af2ee..80ac75591 100644 --- a/src/version.c +++ b/src/version.c @@ -729,6 +729,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 981, +/**/ 980, /**/ 979, |