grep: use static trans-case table

In order to prepare the kwset machinery for a case-insensitive search, we
used to use a static table of 256 elements and filled it every time before
calling kwsalloc().  Because the kwset machinery will never modify this
table, just allocate a single instance globally and fill it at the compile
time.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano
2012-02-28 14:20:53 -08:00
parent d0482e88a7
commit 0f871cf56e
3 changed files with 42 additions and 8 deletions

11
grep.c
View File

@ -168,15 +168,10 @@ static void compile_regexp(struct grep_pat *p, struct grep_opt *opt)
p->fixed = 0;
if (p->fixed) {
if (opt->regflags & REG_ICASE || p->ignore_case) {
static char trans[256];
int i;
for (i = 0; i < 256; i++)
trans[i] = tolower(i);
p->kws = kwsalloc(trans);
} else {
if (opt->regflags & REG_ICASE || p->ignore_case)
p->kws = kwsalloc(tolower_trans_tbl);
else
p->kws = kwsalloc(NULL);
}
kwsincr(p->kws, p->pattern, p->patternlen);
kwsprep(p->kws);
return;