summaryrefslogtreecommitdiff
path: root/regexset.c
diff options
context:
space:
mode:
Diffstat (limited to 'regexset.c')
-rw-r--r--regexset.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/regexset.c b/regexset.c
index c816217..5e2d002 100644
--- a/regexset.c
+++ b/regexset.c
@@ -7,10 +7,12 @@
struct regexset_t *regexes;
int rs_count;
+const unsigned char *rs_pcre_tables;
void rs_init() {
regexes = NULL;
rs_count = 0;
+ rs_pcre_tables = pcre_maketables();
}
static void re_error(const char *name, const char *pattern, const char *error, int erroffset) {
@@ -34,7 +36,7 @@ struct regexset_t *rs_add(const char *text, const char *join) {
const char *error;
int erroffset;
- rs->text = pcre_compile(text, 0, &error, &erroffset, NULL);
+ rs->text = pcre_compile(text, 0, &error, &erroffset, rs_pcre_tables);
if(rs->text == NULL) {
re_error("text", text, error, erroffset);
return NULL;
@@ -43,7 +45,7 @@ struct regexset_t *rs_add(const char *text, const char *join) {
/* Free compiled patterns from this point when failing. */
- rs->join = pcre_compile(join, 0, &error, &erroffset, NULL);
+ rs->join = pcre_compile(join, 0, &error, &erroffset, rs_pcre_tables);
if(rs->join == NULL) {
pcre_free(rs->text);
if(rs->text_e)
@@ -71,4 +73,6 @@ void rs_free() {
}
free(regexes);
regexes = NULL;
+ pcre_free((void*)rs_pcre_tables);
+ rs_pcre_tables = NULL;
}