updated for version 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.
This commit is contained in:
Bram Moolenaar
2013-06-02 16:07:10 +02:00
parent 53b94309d4
commit 5f67bdc25a
4 changed files with 9 additions and 4 deletions
+3 -4
View File
@@ -4435,11 +4435,10 @@ nfa_regmatch(start, submatch, m, endp)
{
if (bytelen == 0)
{
/* empty match always works, add NFA_SKIP with zero to
* be used next */
addstate_here(thislist, t->state->out, &t->subs,
/* empty match always works, output of NFA_SKIP to be
* used next */
addstate_here(thislist, t->state->out->out, &t->subs,
&listidx);
thislist->t[listidx + 1].count = 0;
}
else if (bytelen <= clen)
{
+1
View File
@@ -361,6 +361,7 @@ STARTTEST
: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<spanyyy', 'spany'])
+3
View File
@@ -815,6 +815,9 @@ OK 2 - \(\i\+\) \1
OK 0 - \(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7\8\9
OK 1 - \(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7\8\9
OK 2 - \(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7\8\9
OK 0 - \(\d*\)a \1b
OK 1 - \(\d*\)a \1b
OK 2 - \(\d*\)a \1b
OK 0 - <\@<=span.
OK 1 - <\@<=span.
OK 2 - <\@<=span.
+2
View File
@@ -728,6 +728,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1093,
/**/
1092,
/**/