aboutsummaryrefslogtreecommitdiffstats
path: root/re.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2014-11-03 20:35:40 +0200
committerArnold D. Robbins <arnold@skeeve.com>2014-11-03 20:35:40 +0200
commit204bec7af64c61489e37007d45de936482007977 (patch)
tree422dc414082262eebf770b8c7aa48c9b26f698d4 /re.c
parentaf1cce266d1b6c875cf01db6c47ada89cbf64411 (diff)
parentc9936ef0d4d7a7f263831bead31c5ffcf8b0a8d3 (diff)
downloadegawk-204bec7af64c61489e37007d45de936482007977.tar.gz
egawk-204bec7af64c61489e37007d45de936482007977.tar.bz2
egawk-204bec7af64c61489e37007d45de936482007977.zip
Merge branch 'gawk-4.1-stable'
Diffstat (limited to 're.c')
-rw-r--r--re.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/re.c b/re.c
index 9118129e..12c212a6 100644
--- a/re.c
+++ b/re.c
@@ -284,13 +284,18 @@ research(Regexp *rp, char *str, int start,
if (rp->dfa && ! no_bol && ! need_start) {
char save;
size_t count = 0;
+ struct dfa *superset = dfasuperset(rp->dfareg);
/*
* dfa likes to stick a '\n' right after the matched
* text. So we just save and restore the character.
*/
save = str[start+len];
- ret = dfaexec(rp->dfareg, str+start, str+start+len, true,
- &count, &try_backref);
+ if (superset)
+ ret = dfaexec(superset, str+start, str+start+len,
+ true, NULL, NULL);
+ if (ret)
+ ret = dfaexec(rp->dfareg, str+start, str+start+len,
+ true, &count, &try_backref);
str[start+len] = save;
}