From: Ævar Arnfjörð Bjarmason Date: Sat, 27 Jul 2019 23:48:26 GMT Subject: Re: [PATCH 3/3] grep: plug leak of pcre chartables in PCRE2 Message-ID: <874l376nud.fsf@evledraar.gmail.com> In-Reply-To: <20190727202759.22310-4-carenas@gmail.com> On Sat, Jul 27 2019, Carlo Marcelo Arenas Belón wrote: > Just as it is done with PCRE1, make sure that the allocated chartables > get free at cleanup time. > > This assumes no global context is used (NULL passed when created the > tables), but will likely be updated in tandem if that ever changes. > > Signed-off-by: Carlo Marcelo Arenas Belón > --- > grep.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/grep.c b/grep.c > index d04635fad4..d9768c5f05 100644 > --- a/grep.c > +++ b/grep.c > @@ -604,6 +604,7 @@ static void free_pcre2_pattern(struct grep_pat *p) > pcre2_match_data_free(p->pcre2_match_data); > pcre2_jit_stack_free(p->pcre2_jit_stack); > pcre2_match_context_free(p->pcre2_match_context); > + free((void *)p->pcre_tables); Is the cast really needed? I'm rusty on the rules, removing it from the pcre_free() you might have copied this from produces a warning for me, but not for free() itself. This is on GCC 8.3.0. How about for you & what compiler(s)?