From: Richard W.M. Jones Date: Tue, 21 Sep 2010 18:38:50 +0000 (+0100) Subject: leak: Free PCRE regexps when library is unloaded. X-Git-Tag: 1.5.17~6 X-Git-Url: http://git.annexia.org/?a=commitdiff_plain;h=e7f62742b6141fd19444fc0e191281777cd966f9;p=libguestfs.git leak: Free PCRE regexps when library is unloaded. The compiled PCRE regexps used for inspection were being leaked when the library was unloaded. (Found by valgrind). --- diff --git a/src/inspect.c b/src/inspect.c index 11a5374..bce0fd6 100644 --- a/src/inspect.c +++ b/src/inspect.c @@ -57,6 +57,8 @@ static pcre *re_xdev; static pcre *re_windows_version; static void compile_regexps (void) __attribute__((constructor)); +static void free_regexps (void) __attribute__((destructor)); + static void compile_regexps (void) { @@ -88,6 +90,22 @@ compile_regexps (void) COMPILE (re_windows_version, "^(\\d+)\\.(\\d+)", 0); } +static void +free_regexps (void) +{ + pcre_free (re_file_elf); + pcre_free (re_file_win64); + pcre_free (re_elf_ppc64); + pcre_free (re_fedora); + pcre_free (re_rhel_old); + pcre_free (re_rhel); + pcre_free (re_rhel_no_minor); + pcre_free (re_debian); + pcre_free (re_aug_seq); + pcre_free (re_xdev); + pcre_free (re_windows_version); +} + /* Match a regular expression which contains no captures. Returns * true if it matches or false if it doesn't. */