diff --git a/7.3.1010 b/7.3.1010 new file mode 100644 index 0000000..7fafb93 --- /dev/null +++ b/7.3.1010 @@ -0,0 +1,174 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.1010 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.1010 +Problem: New regexp: adding \Z makes every character match. +Solution: Only apply ireg_icombine for composing characters. + Alsl add missing change from patch 1008. (Ken Takata) +Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok + + +*** ../vim-7.3.1009/src/regexp_nfa.c 2013-05-23 22:25:10.000000000 +0200 +--- src/regexp_nfa.c 2013-05-24 20:20:14.000000000 +0200 +*************** +*** 2859,2865 **** + List *listtbl[2][2]; + List *ll; + int listid = 1; +! int endnode = 0; + List *thislist; + List *nextlist; + List *neglist; +--- 2859,2865 ---- + List *listtbl[2][2]; + List *ll; + int listid = 1; +! int endnode; + List *thislist; + List *nextlist; + List *neglist; +*************** +*** 3192,3204 **** + + case NFA_MULTIBYTE: + case NFA_COMPOSING: +! switch (t->state->c) +! { +! case NFA_MULTIBYTE: endnode = NFA_END_MULTIBYTE; break; +! case NFA_COMPOSING: endnode = NFA_END_COMPOSING; break; +! default: endnode = 0; +! } +! + result = OK; + sta = t->state->out; + len = 1; +--- 3192,3198 ---- + + case NFA_MULTIBYTE: + case NFA_COMPOSING: +! endnode = t->state->c + 1; + result = OK; + sta = t->state->out; + len = 1; +*************** +*** 3206,3212 **** + { + if (reginput[len-1] != sta->c) + { +! result = OK - 1; + break; + } + len++; +--- 3200,3206 ---- + { + if (reginput[len-1] != sta->c) + { +! result = FAIL; + break; + } + len++; +*************** +*** 3215,3225 **** + + /* if input char length doesn't match regexp char length */ + if (len -1 < n || sta->c != endnode) +! result = OK - 1; + end = t->state->out1; /* NFA_END_MULTIBYTE or + NFA_END_COMPOSING */ + /* If \Z was present, then ignore composing characters */ +! if (regflags & RF_ICOMBINE) + result = 1 ^ sta->negated; + ADD_POS_NEG_STATE(end); + break; +--- 3209,3219 ---- + + /* if input char length doesn't match regexp char length */ + if (len -1 < n || sta->c != endnode) +! result = FAIL; + end = t->state->out1; /* NFA_END_MULTIBYTE or + NFA_END_COMPOSING */ + /* If \Z was present, then ignore composing characters */ +! if (ireg_icombine && endnode == NFA_END_COMPOSING) + result = 1 ^ sta->negated; + ADD_POS_NEG_STATE(end); + break; +*** ../vim-7.3.1009/src/testdir/test95.in 2013-05-23 22:43:03.000000000 +0200 +--- src/testdir/test95.in 2013-05-24 20:18:13.000000000 +0200 +*************** +*** 7,13 **** + STARTTEST + :so small.vim + :so mbyte.vim +! :set nocp encoding=utf-8 viminfo+=nviminfo + :" tl is a List of Lists with: + :" regexp pattern + :" text to test the pattern on +--- 7,13 ---- + STARTTEST + :so small.vim + :so mbyte.vim +! :set nocp encoding=utf-8 viminfo+=nviminfo nomore + :" tl is a List of Lists with: + :" regexp pattern + :" text to test the pattern on +*************** +*** 35,45 **** + :call add(tl, ['\f\+', '&*Ÿfname ', 'fname']) + :call add(tl, ['\%#=1\f\+', '&*Ÿfname ', 'fname']) + + :"""" Combining different tests and features + :call add(tl, ['[^[=a=]]\+', 'ddaãâbcd', 'dd']) + + :"""" Run the tests +- + :" + :for t in tl + : let l = matchlist(t[1], t[0]) +--- 35,47 ---- + :call add(tl, ['\f\+', '&*Ÿfname ', 'fname']) + :call add(tl, ['\%#=1\f\+', '&*Ÿfname ', 'fname']) + ++ :"""" Test \Z ++ :call add(tl, ['ú\Z', 'x']) ++ + :"""" Combining different tests and features + :call add(tl, ['[^[=a=]]\+', 'ddaãâbcd', 'dd']) + + :"""" Run the tests + :" + :for t in tl + : let l = matchlist(t[1], t[0]) +*** ../vim-7.3.1009/src/testdir/test95.ok 2013-05-23 22:43:03.000000000 +0200 +--- src/testdir/test95.ok 2013-05-24 20:18:55.000000000 +0200 +*************** +*** 9,12 **** +--- 9,13 ---- + OK - \%#=1\i\+ + OK - \f\+ + OK - \%#=1\f\+ ++ OK - ú\Z + OK - [^[=a=]]\+ +*** ../vim-7.3.1009/src/version.c 2013-05-24 18:58:39.000000000 +0200 +--- src/version.c 2013-05-24 20:21:52.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1010, + /**/ + +-- +Never under any circumstances take a sleeping pill +and a laxative on the same night. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org ///