diff options
author | Zev Weiss <zev@bewilderbeest.net> | 2016-12-25 02:57:07 -0600 |
---|---|---|
committer | Jim Meyering <meyering@fb.com> | 2016-12-25 10:41:32 +0100 |
commit | 41268e548dfe04f9a019c5db099266391c3a4103 (patch) | |
tree | 5649629857a45e994a82af033aefa2e0b4bdf22b /src/searchutils.c | |
parent | 9365ed6536d4fabf42ec17fef1bbe5d78884f950 (diff) | |
download | grep-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.c | 7 |
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 |