diff options
author | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2014-11-03 14:40:38 -0500 |
---|---|---|
committer | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2014-11-03 14:40:38 -0500 |
commit | 6a9d48365f5044b64a6c270760808d17d475ca4b (patch) | |
tree | d612b2410fe9af333a79e524f5e5102f9754feed /re.c | |
parent | b4d06df669e1eaf6c98cacb5c5f299bb5324e804 (diff) | |
parent | 204bec7af64c61489e37007d45de936482007977 (diff) | |
download | egawk-6a9d48365f5044b64a6c270760808d17d475ca4b.tar.gz egawk-6a9d48365f5044b64a6c270760808d17d475ca4b.tar.bz2 egawk-6a9d48365f5044b64a6c270760808d17d475ca4b.zip |
Merge remote-tracking branch 'origin/master' into select
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; } |