analyze: use automatic cleanup in one more place

This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2022-05-19 08:02:29 +02:00
parent e2d999345e
commit d5dcd00ba2
+5 -10
View File
@@ -8,9 +8,13 @@
#include "path-util.h"
#include "sort-util.h"
#include "special.h"
#include "static-destruct.h"
#include "strv.h"
#include "terminal-util.h"
static Hashmap *unit_times_hashmap = NULL;
STATIC_DESTRUCTOR_REGISTER(unit_times_hashmap, hashmap_freep);
static int list_dependencies_print(
const char *name,
unsigned level,
@@ -54,8 +58,6 @@ static int list_dependencies_get_dependencies(sd_bus *bus, const char *name, cha
return bus_get_unit_property_strv(bus, path, "After", deps);
}
static Hashmap *unit_times_hashmap;
static int list_dependencies_compare(char *const *a, char *const *b) {
usec_t usa = 0, usb = 0;
UnitTimes *times;
@@ -197,7 +199,6 @@ static int list_dependencies(sd_bus *bus, const char *name) {
int verb_critical_chain(int argc, char *argv[], void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
_cleanup_(unit_times_free_arrayp) UnitTimes *times = NULL;
Hashmap *h;
int n, r;
r = acquire_bus(&bus, NULL);
@@ -208,16 +209,11 @@ int verb_critical_chain(int argc, char *argv[], void *userdata) {
if (n <= 0)
return n;
h = hashmap_new(&string_hash_ops);
if (!h)
return log_oom();
for (UnitTimes *u = times; u->has_data; u++) {
r = hashmap_put(h, u->name, u);
r = hashmap_ensure_put(&unit_times_hashmap, &string_hash_ops, u->name, u);
if (r < 0)
return log_error_errno(r, "Failed to add entry to hashmap: %m");
}
unit_times_hashmap = h;
pager_open(arg_pager_flags);
@@ -230,6 +226,5 @@ int verb_critical_chain(int argc, char *argv[], void *userdata) {
else
list_dependencies(bus, SPECIAL_DEFAULT_TARGET);
h = hashmap_free(h);
return 0;
}