diff --git a/7.3.1093 b/7.3.1093 new file mode 100644 index 0000000..1c52bf5 --- /dev/null +++ b/7.3.1093 @@ -0,0 +1,87 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.1093 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.1093 +Problem: New regexp engine: When a sub expression is empty \1 skips a + character. +Solution: Make \1 try the current position when the match is emtpy. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + + +*** ../vim-7.3.1092/src/regexp_nfa.c 2013-06-02 15:55:52.000000000 +0200 +--- src/regexp_nfa.c 2013-06-02 16:03:28.000000000 +0200 +*************** +*** 4435,4445 **** + { + if (bytelen == 0) + { +! /* empty match always works, add NFA_SKIP with zero to +! * be used next */ +! addstate_here(thislist, t->state->out, &t->subs, + &listidx); +- thislist->t[listidx + 1].count = 0; + } + else if (bytelen <= clen) + { +--- 4435,4444 ---- + { + if (bytelen == 0) + { +! /* empty match always works, output of NFA_SKIP to be +! * used next */ +! addstate_here(thislist, t->state->out->out, &t->subs, + &listidx); + } + else if (bytelen <= clen) + { +*** ../vim-7.3.1092/src/testdir/test64.in 2013-06-01 19:54:39.000000000 +0200 +--- src/testdir/test64.in 2013-06-02 16:02:56.000000000 +0200 +*************** +*** 361,366 **** +--- 361,367 ---- + :call add(tl, [2, '\(\i\+\) \1', ' abc abc', 'abc abc', 'abc']) + :call add(tl, [2, '\(\i\+\) \1', 'xgoo goox', 'goo goo', 'goo']) + :call add(tl, [2, '\(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7\8\9', 'xabcddefghiabcddefghix', 'abcddefghiabcddefghi', 'a', 'b', 'c', 'dd', 'e', 'f', 'g', 'h', 'i']) ++ :call add(tl, [2, '\(\d*\)a \1b', ' a b ', 'a b', '']) + :" + :"""" Look-behind with limit + :call add(tl, [2, '<\@<=span.', 'xxspanxx