]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
timedate: use cleanup attribute at one more place
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 15 Mar 2022 07:14:07 +0000 (16:14 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 17 Mar 2022 11:09:18 +0000 (20:09 +0900)
src/timedate/timedated.c

index 66b454269d73bd5147e657684c5985e79c104455..1ac3dc102d2335f4f9b464cf48c3b71b66504d00 100644 (file)
@@ -102,15 +102,18 @@ static void unit_status_info_clear(UnitStatusInfo *p) {
         p->active_state = mfree(p->active_state);
 }
 
-static void unit_status_info_free(UnitStatusInfo *p) {
-        assert(p);
+static UnitStatusInfo *unit_status_info_free(UnitStatusInfo *p) {
+        if (!p)
+                return NULL;
 
         unit_status_info_clear(p);
         free(p->name);
         free(p->path);
-        free(p);
+        return mfree(p);
 }
 
+DEFINE_TRIVIAL_CLEANUP_FUNC(UnitStatusInfo*, unit_status_info_free);
+
 static void context_clear(Context *c) {
         UnitStatusInfo *p;
 
@@ -129,8 +132,13 @@ static void context_clear(Context *c) {
 }
 
 static int context_add_ntp_service(Context *c, const char *s, const char *source) {
+        _cleanup_(unit_status_info_freep) UnitStatusInfo *unit = NULL;
         UnitStatusInfo *u;
 
+        assert(c);
+        assert(s);
+        assert(source);
+
         if (!unit_name_is_valid(s, UNIT_NAME_PLAIN))
                 return -EINVAL;
 
@@ -139,18 +147,17 @@ static int context_add_ntp_service(Context *c, const char *s, const char *source
                 if (streq(u->name, s))
                         return 0;
 
-        u = new0(UnitStatusInfo, 1);
-        if (!u)
+        unit = new0(UnitStatusInfo, 1);
+        if (!unit)
                 return -ENOMEM;
 
-        u->name = strdup(s);
-        if (!u->name) {
-                free(u);
+        unit->name = strdup(s);
+        if (!unit->name)
                 return -ENOMEM;
-        }
 
-        LIST_APPEND(units, c->units, u);
-        log_unit_debug(u, "added from %s.", source);
+        LIST_APPEND(units, c->units, unit);
+        log_unit_debug(unit, "added from %s.", source);
+        TAKE_PTR(unit);
 
         return 0;
 }