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:
11
grep.c
11
grep.c
@ -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;
|
||||
|
||||
Reference in New Issue
Block a user