diff options
-rw-r--r-- | src/regexp_nfa.c | 5 | ||||
-rw-r--r-- | src/testdir/test64.in | 1 | ||||
-rw-r--r-- | src/testdir/test64.ok | 3 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 10 insertions, 1 deletions
diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c index 5288eb6d3..fe1d02582 100644 --- a/src/regexp_nfa.c +++ b/src/regexp_nfa.c @@ -5322,7 +5322,10 @@ nfa_regmatch(prog, start, submatch, m) log_subsexpr(m); #endif nfa_match = TRUE; - break; + /* See comment above at "goto nextchar". */ + if (nextlist->n == 0) + clen = 0; + goto nextchar; case NFA_START_INVISIBLE: case NFA_START_INVISIBLE_FIRST: diff --git a/src/testdir/test64.in b/src/testdir/test64.in index ac3f13d54..8f7008c1a 100644 --- a/src/testdir/test64.in +++ b/src/testdir/test64.in @@ -427,6 +427,7 @@ STARTTEST :""""" \@> :call add(tl, [2, '\(a*\)\@>a', 'aaaa']) :call add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa']) +:call add(tl, [2, '^\(.\{-}b\)\@>.', ' abcbd', ' abc', ' ab']) :" TODO: BT engine does not restore submatch after failure :call add(tl, [1, '\(a*\)\@>a\|a\+', 'aaaa', 'aaaa']) :" diff --git a/src/testdir/test64.ok b/src/testdir/test64.ok index da19c0423..fa83f91af 100644 --- a/src/testdir/test64.ok +++ b/src/testdir/test64.ok @@ -983,6 +983,9 @@ OK 2 - \(a*\)\@>a OK 0 - \(a*\)\@>b OK 1 - \(a*\)\@>b OK 2 - \(a*\)\@>b +OK 0 - ^\(.\{-}b\)\@>. +OK 1 - ^\(.\{-}b\)\@>. +OK 2 - ^\(.\{-}b\)\@>. OK 0 - \(a*\)\@>a\|a\+ OK 2 - \(a*\)\@>a\|a\+ OK 0 - \_[^8-9]\+ diff --git a/src/version.c b/src/version.c index 0e6dc1c80..99c9d222d 100644 --- a/src/version.c +++ b/src/version.c @@ -739,6 +739,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 20, +/**/ 19, /**/ 18, |