From 15360ad75f1894ce5f2f673d92e7e3ad22928504 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 30 Aug 2023 16:38:38 +0000 Subject: [PATCH] strings: Add function to free string arrays This should help us to keep code tidier and shorter. Signed-off-by: Michael Tremer --- src/libpakfire/include/pakfire/string.h | 12 ++++++++++++ src/libpakfire/package.c | 22 ++++++---------------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/libpakfire/include/pakfire/string.h b/src/libpakfire/include/pakfire/string.h index 01a71c6f4..bcdbd0773 100644 --- a/src/libpakfire/include/pakfire/string.h +++ b/src/libpakfire/include/pakfire/string.h @@ -51,6 +51,18 @@ char* pakfire_string_replace(const char* s, const char* pattern, const char* rep char** pakfire_string_split(const char* s, char delim); char* pakfire_string_join(char** list, const char* delim); + +/* + Cleanup Stuff +*/ + +void inline pakfire_strings_free(char** array) { + for (char** s = array; *s; s++) + free(*s); + + free(array); +} + #define TIME_STRING_MAX 32 #define pakfire_format_size(dst, value) \ diff --git a/src/libpakfire/package.c b/src/libpakfire/package.c index 9f1cf2cd7..56823cfc7 100644 --- a/src/libpakfire/package.c +++ b/src/libpakfire/package.c @@ -1302,10 +1302,7 @@ PAKFIRE_EXPORT char** pakfire_package_get_deps(struct pakfire_package* pkg, ERROR: if (ret) { - for (char** e = ret; *e; e++) - free(*e); - free(ret); - + pakfire_strings_free(ret); ret = NULL; } @@ -1603,12 +1600,10 @@ PAKFIRE_EXPORT char* pakfire_package_dump(struct pakfire_package* pkg, int flags // Build Arches char** build_arches = pakfire_package_get_strings(pkg, PAKFIRE_PKG_BUILD_ARCHES); if (build_arches) { - for (char** build_arch = build_arches; *build_arch; build_arch++) { + for (char** build_arch = build_arches; *build_arch; build_arch++) pakfire_package_dump_add_line(&string, _("Build Arch"), *build_arch); - free(*build_arch); - } - free(build_arches); + pakfire_strings_free(build_arches); } enum pakfire_digest_types digest_type = PAKFIRE_DIGEST_UNDEFINED; @@ -1962,11 +1957,8 @@ static int _pakfire_package_add_json_dependencies( goto ERROR; ERROR: - if (dependencies) { - for (char** dep = dependencies; *dep; dep++) - free(*dep); - free(dependencies); - } + if (dependencies) + pakfire_strings_free(dependencies); return r; } @@ -2239,9 +2231,7 @@ static int pakfire_package_add_build_metadata(struct pakfire_package* pkg, r = pakfire_json_add_string_array(pkg->pakfire, object, "arches", build_arches); // Cleanup - for (char** build_arch = build_arches; *build_arch; build_arch++) - free(*build_arch); - free(build_arches); + pakfire_strings_free(build_arches); if (r) goto ERROR; -- 2.39.5