From 0e5bb5ffcf59176f2a6307788038c188f1e470c2 Mon Sep 17 00:00:00 2001 From: Alex 'AdUser' Z Date: Tue, 20 Sep 2016 22:13:05 +1000 Subject: [PATCH] * implement flush() for filters --- src/filters/pcre.c | 11 ++++++++++- src/filters/preg.c | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/filters/pcre.c b/src/filters/pcre.c index 4239e5e..eda91a5 100644 --- a/src/filters/pcre.c +++ b/src/filters/pcre.c @@ -182,9 +182,11 @@ match(cfg_t *cfg, const char *line, char *buf, size_t buf_size) { } void -destroy(cfg_t *cfg) { +flush(cfg_t *cfg) { f2b_regex_t *next = NULL, *r = NULL; + assert(cfg != NULL); + for (r = cfg->regexps; r != NULL; r = next) { next = r->next; if (cfg->study) @@ -192,5 +194,12 @@ destroy(cfg_t *cfg) { pcre_free(r->regex); free(r); } +} + +void +destroy(cfg_t *cfg) { + assert(cfg != NULL); + + flush(cfg); free(cfg); } diff --git a/src/filters/preg.c b/src/filters/preg.c index d3f3d0a..98afbb3 100644 --- a/src/filters/preg.c +++ b/src/filters/preg.c @@ -149,13 +149,22 @@ match(cfg_t *cfg, const char *line, char *buf, size_t buf_size) { } void -destroy(cfg_t *cfg) { +flush(cfg_t *cfg) { f2b_regex_t *next = NULL, *r = NULL; + assert(cfg != NULL); + for (r = cfg->regexps; r != NULL; r = next) { next = r->next; regfree(&r->regex); free(r); } +} + +void +destroy(cfg_t *cfg) { + assert(cfg != NULL); + + flush(cfg); free(cfg); }