From 2717eb6306781ec402d5ad3aa7a05b093e9bd0b1 Mon Sep 17 00:00:00 2001 From: Stone Tickle Date: Fri, 11 Jun 2021 15:00:47 +0900 Subject: [PATCH 1/3] implement pkgconf_cross_personality_deinit --- libpkgconf/libpkgconf.h | 1 + libpkgconf/personality.c | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/libpkgconf/libpkgconf.h b/libpkgconf/libpkgconf.h index 8715789..8c70251 100644 --- a/libpkgconf/libpkgconf.h +++ b/libpkgconf/libpkgconf.h @@ -231,6 +231,7 @@ PKGCONF_API void pkgconf_client_dir_list_build(pkgconf_client_t *client, const p /* personality.c */ PKGCONF_API pkgconf_cross_personality_t *pkgconf_cross_personality_default(void); PKGCONF_API pkgconf_cross_personality_t *pkgconf_cross_personality_find(const char *triplet); +PKGCONF_API void pkgconf_cross_personality_deinit(pkgconf_cross_personality_t *personality); #define PKGCONF_IS_MODULE_SEPARATOR(c) ((c) == ',' || isspace ((unsigned int)(c))) #define PKGCONF_IS_OPERATOR_CHAR(c) ((c) == '<' || (c) == '>' || (c) == '!' || (c) == '=') diff --git a/libpkgconf/personality.c b/libpkgconf/personality.c index a8bcb61..0286d52 100644 --- a/libpkgconf/personality.c +++ b/libpkgconf/personality.c @@ -103,6 +103,14 @@ pkgconf_cross_personality_default(void) return &default_personality; } +void +pkgconf_cross_personality_deinit(pkgconf_cross_personality_t *personality) +{ + pkgconf_path_free(&personality->dir_list); + pkgconf_path_free(&personality->filter_libdirs); + pkgconf_path_free(&personality->filter_includedirs); +} + #ifndef PKGCONF_LITE static bool valid_triplet(const char *triplet) -- 2.41.0 From d444dfd6e9bfb780026fe6d892ac8488fcfa4369 Mon Sep 17 00:00:00 2001 From: Stone Tickle Date: Fri, 11 Jun 2021 15:00:58 +0900 Subject: [PATCH 2/3] deinit personality in cli --- cli/main.c | 1 + 1 file changed, 1 insertion(+) diff --git a/cli/main.c b/cli/main.c index 000b573..2ac7ee3 100644 --- a/cli/main.c +++ b/cli/main.c @@ -1454,6 +1454,7 @@ out_println: printf("\n"); out: + pkgconf_cross_personality_deinit(personality); pkgconf_client_deinit(&pkg_client); if (logfile_out != NULL) -- 2.41.0 From e7efbe19e32ffd5752a0b876de261ef10489d654 Mon Sep 17 00:00:00 2001 From: Stone Tickle Date: Fri, 11 Jun 2021 15:01:10 +0900 Subject: [PATCH 3/3] close error_msgout if opened --- cli/main.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cli/main.c b/cli/main.c index 2ac7ee3..837fa8b 100644 --- a/cli/main.c +++ b/cli/main.c @@ -802,6 +802,7 @@ main(int argc, char *argv[]) char *want_env_prefix = NULL; unsigned int want_client_flags = PKGCONF_PKG_PKGF_NONE; pkgconf_cross_personality_t *personality; + bool opened_error_msgout = false; want_flags = 0; @@ -1027,8 +1028,10 @@ main(int argc, char *argv[]) error_msgout = stderr; if ((want_flags & PKG_ERRORS_ON_STDOUT) == PKG_ERRORS_ON_STDOUT) error_msgout = stdout; - if ((want_flags & PKG_SILENCE_ERRORS) == PKG_SILENCE_ERRORS) + if ((want_flags & PKG_SILENCE_ERRORS) == PKG_SILENCE_ERRORS) { error_msgout = fopen(PATH_DEV_NULL, "w"); + opened_error_msgout = true; + } if ((want_flags & PKG_IGNORE_CONFLICTS) == PKG_IGNORE_CONFLICTS || getenv("PKG_CONFIG_IGNORE_CONFLICTS") != NULL) want_client_flags |= PKGCONF_PKG_PKGF_SKIP_CONFLICTS; @@ -1459,6 +1462,8 @@ out: if (logfile_out != NULL) fclose(logfile_out); + if (opened_error_msgout) + fclose(error_msgout); return ret; } -- 2.41.0