From f808300a0117a452d8135dba3dcb5743a32f4cbc Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Wed, 13 Sep 2017 14:56:10 -0500 Subject: [PATCH] libpkgconf: pkg: some elements of virtual packages should be freed as they have heap-allocated portions (closes #132) --- libpkgconf/pkg.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libpkgconf/pkg.c b/libpkgconf/pkg.c index 73b9d50..ca3a8c2 100644 --- a/libpkgconf/pkg.c +++ b/libpkgconf/pkg.c @@ -404,7 +404,10 @@ pkgconf_pkg_new_from_file(pkgconf_client_t *client, const char *filename, FILE * void pkgconf_pkg_free(pkgconf_client_t *client, pkgconf_pkg_t *pkg) { - if (pkg == NULL || pkg->flags & PKGCONF_PKG_PROPF_STATIC) + if (pkg == NULL) + return; + + if (pkg->flags & PKGCONF_PKG_PROPF_STATIC && !(pkg->flags & PKGCONF_PKG_PROPF_VIRTUAL)) return; pkgconf_cache_remove(client, pkg); @@ -421,6 +424,9 @@ pkgconf_pkg_free(pkgconf_client_t *client, pkgconf_pkg_t *pkg) pkgconf_tuple_free(&pkg->vars); + if (pkg->flags & PKGCONF_PKG_PROPF_VIRTUAL) + return; + if (pkg->id != NULL) free(pkg->id);