summaryrefslogtreecommitdiff
path: root/src/searchutils.c
diff options
context:
space:
mode:
authorZev Weiss <zev@bewilderbeest.net>2016-12-25 02:57:07 -0600
committerJim Meyering <meyering@fb.com>2016-12-25 10:41:32 +0100
commit41268e548dfe04f9a019c5db099266391c3a4103 (patch)
tree5649629857a45e994a82af033aefa2e0b4bdf22b /src/searchutils.c
parent9365ed6536d4fabf42ec17fef1bbe5d78884f950 (diff)
downloadgrep-41268e548dfe04f9a019c5db099266391c3a4103.tar.gz
dfasearch: thread safety
* src/dfasearch.c (struct dfa_comp): New struct to hold previously-global variables. (dfawarn): Remove static variable. (kwsmusts): Operate on a dfa_comp parameter instead of global variables. (GEAcompile): Allocate and return a dfa_comp struct instead of setting global variables. (EGexecute): Operate on a dfa_comp parameter instead of global variables. * src/searchutils.c (kwsinit): Replace a static array with a dynamically-allocated one.
Diffstat (limited to 'src/searchutils.c')
-rw-r--r--src/searchutils.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/searchutils.c b/src/searchutils.c
index 1552ed74..a0079553 100644
--- a/src/searchutils.c
+++ b/src/searchutils.c
@@ -43,11 +43,11 @@ wordinit (void)
kwset_t
kwsinit (bool mb_trans)
{
- static char trans[NCHAR];
- char *transptr = NULL;
+ char *trans = NULL;
if (match_icase && (MB_CUR_MAX == 1 || mb_trans))
{
+ trans = xmalloc (NCHAR);
if (MB_CUR_MAX == 1)
for (int i = 0; i < NCHAR; i++)
trans[i] = toupper (i);
@@ -66,10 +66,9 @@ kwsinit (bool mb_trans)
else
trans[i] = i;
}
- transptr = trans;
}
- return kwsalloc (transptr, false);
+ return kwsalloc (trans, false);
}
/* In the buffer *MB_START, return the number of bytes needed to go