diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2014-11-03 20:35:40 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2014-11-03 20:35:40 +0200 |
commit | 204bec7af64c61489e37007d45de936482007977 (patch) | |
tree | 422dc414082262eebf770b8c7aa48c9b26f698d4 /re.c | |
parent | af1cce266d1b6c875cf01db6c47ada89cbf64411 (diff) | |
parent | c9936ef0d4d7a7f263831bead31c5ffcf8b0a8d3 (diff) | |
download | egawk-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.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -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; } |