From 4493a322f67f7e2df68337912c06c21939680ffa Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Wed, 3 Aug 2022 16:37:04 -0700 Subject: [PATCH] main: do cleanup when checking required version --- cli/main.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/cli/main.c b/cli/main.c index b37a37a..b380c43 100644 --- a/cli/main.c +++ b/cli/main.c @@ -1183,17 +1183,21 @@ main(int argc, char *argv[]) pkgconf_error(&pkg_client, "Package '%s' was not found\n", pkgiter->package); ret = EXIT_FAILURE; - goto out; + goto cleanup; } if (pkgconf_compare_version(pkg->version, required_module_version) >= 0) { ret = EXIT_SUCCESS; - goto out; + goto cleanup; } } ret = EXIT_FAILURE; +cleanup: + if (pkg) + pkgconf_pkg_unref(&pkg_client, pkg); + pkgconf_dependency_free(&deplist); goto out; } else if (required_exact_module_version != NULL) @@ -1219,17 +1223,21 @@ main(int argc, char *argv[]) pkgconf_error(&pkg_client, "Package '%s' was not found\n", pkgiter->package); ret = EXIT_FAILURE; - goto out; + goto cleanup2; } if (pkgconf_compare_version(pkg->version, required_exact_module_version) == 0) { ret = EXIT_SUCCESS; - goto out; + goto cleanup2; } } ret = EXIT_FAILURE; +cleanup2: + if (pkg) + pkgconf_pkg_unref(&pkg_client, pkg); + pkgconf_dependency_free(&deplist); goto out; } else if (required_max_module_version != NULL) @@ -1255,17 +1263,21 @@ main(int argc, char *argv[]) pkgconf_error(&pkg_client, "Package '%s' was not found\n", pkgiter->package); ret = EXIT_FAILURE; - goto out; + goto cleanup3; } if (pkgconf_compare_version(pkg->version, required_max_module_version) <= 0) { ret = EXIT_SUCCESS; - goto out; + goto cleanup3; } } ret = EXIT_FAILURE; +cleanup3: + if (pkg) + pkgconf_pkg_unref(&pkg_client, pkg); + pkgconf_dependency_free(&deplist); goto out; }