From 41518556e0e44a517065543d7d02b1fcd110dd90 Mon Sep 17 00:00:00 2001 From: Norihiro Tanaka Date: Sun, 2 Nov 2014 18:14:18 +0900 Subject: [PATCH] Use superset with dfa in re.c. --- re.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/re.c b/re.c index 9118129..012f10d 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; } -- 2.1.3