diff options
Diffstat (limited to 'generic/regexec.c')
-rw-r--r-- | generic/regexec.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/generic/regexec.c b/generic/regexec.c index 50fcc70..088d12b 100644 --- a/generic/regexec.c +++ b/generic/regexec.c @@ -250,15 +250,20 @@ struct colormap *cm; close = shortest(v, s, close, close, v->stop, &open); if (close == NULL) break; /* NOTE BREAK */ + if (v->nmatch == 0) { + /* don't need exact location */ + freedfa(d); + freedfa(s); + return REG_OKAY; + } MDEBUG(("between %ld and %ld\n", LOFF(open), LOFF(close))); for (begin = open; begin <= close; begin++) { MDEBUG(("\nfind trying at %ld\n", LOFF(begin))); end = longest(v, d, begin, v->stop); if (end != NULL) { - if (v->nmatch > 0) { - v->pmatch[0].rm_so = OFF(begin); - v->pmatch[0].rm_eo = OFF(end); - } + assert(v->nmatch > 0); + v->pmatch[0].rm_so = OFF(begin); + v->pmatch[0].rm_eo = OFF(end); freedfa(d); freedfa(s); if (v->nmatch > 1) { |