From 6854265f28573493165bd9f08c23520e752c837e Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Mon, 14 Jan 2019 13:48:23 -0600 Subject: [PATCH] libpkgconf: pkg: use pkgconf_fragment_copy_list() to clean up cflags gathering logic (closes #20) --- libpkgconf/pkg.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/libpkgconf/pkg.c b/libpkgconf/pkg.c index 0ffcc3a..b30e5be 100644 --- a/libpkgconf/pkg.c +++ b/libpkgconf/pkg.c @@ -1573,18 +1573,22 @@ pkgconf_pkg_cflags(pkgconf_client_t *client, pkgconf_pkg_t *root, pkgconf_list_t { unsigned int eflag; unsigned int skip_flags = (client->flags & PKGCONF_PKG_PKGF_DONT_FILTER_INTERNAL_CFLAGS) == 0 ? PKGCONF_PKG_DEPF_INTERNAL : 0; + pkgconf_list_t frags = PKGCONF_LIST_INITIALIZER; + + eflag = pkgconf_pkg_traverse(client, root, pkgconf_pkg_cflags_collect, &frags, maxdepth, skip_flags); + + if (eflag == PKGCONF_PKG_ERRF_OK && client->flags & PKGCONF_PKG_PKGF_MERGE_PRIVATE_FRAGMENTS) + eflag = pkgconf_pkg_traverse(client, root, pkgconf_pkg_cflags_private_collect, &frags, maxdepth, skip_flags); - eflag = pkgconf_pkg_traverse(client, root, pkgconf_pkg_cflags_collect, list, maxdepth, skip_flags); if (eflag != PKGCONF_PKG_ERRF_OK) - pkgconf_fragment_free(list); - - if (client->flags & PKGCONF_PKG_PKGF_MERGE_PRIVATE_FRAGMENTS) { - eflag = pkgconf_pkg_traverse(client, root, pkgconf_pkg_cflags_private_collect, list, maxdepth, skip_flags); - if (eflag != PKGCONF_PKG_ERRF_OK) - pkgconf_fragment_free(list); + pkgconf_fragment_free(&frags); + return eflag; } + pkgconf_fragment_copy_list(client, list, &frags); + pkgconf_fragment_free(&frags); + return eflag; }