From 9a335d2e41e9519c7a5f9bfc9dd1cffab8550a04 Mon Sep 17 00:00:00 2001 From: stanton Date: Tue, 24 Nov 1998 01:16:41 +0000 Subject: * regexec.c: more performance tuning from Henry Spencer. --- generic/ChangeLog | 4 ++++ generic/regexec.c | 13 +++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/generic/ChangeLog b/generic/ChangeLog index f0ce5fd..b084823 100644 --- a/generic/ChangeLog +++ b/generic/ChangeLog @@ -1,3 +1,7 @@ +1998-11-23 + + * regexec.c: more performance tuning from Henry Spencer. + 1998-11-17 * tclScan.c: moved "scan" implementation out of tclCmdMZ.c and 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) { -- cgit v0.12