]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
machine: use _cleanup_ in machine_new
authorDavid Tardon <dtardon@redhat.com>
Wed, 30 Nov 2022 15:42:08 +0000 (16:42 +0100)
committerDavid Tardon <dtardon@redhat.com>
Wed, 14 Dec 2022 08:57:35 +0000 (09:57 +0100)
src/machine/machine.c

index de7b20ff2dbba78cc6d90feb3b7fb19890bad3c0..ca43c977b00889e5632619a40e652a23a32b619a 100644 (file)
 #include "unit-name.h"
 #include "user-util.h"
 
+DEFINE_TRIVIAL_CLEANUP_FUNC(Machine*, machine_free);
+
 Machine* machine_new(Manager *manager, MachineClass class, const char *name) {
-        Machine *m;
+        _cleanup_(machine_freep) Machine *m = NULL;
 
         assert(manager);
         assert(class < _MACHINE_CLASS_MAX);
@@ -50,27 +52,22 @@ Machine* machine_new(Manager *manager, MachineClass class, const char *name) {
 
         m->name = strdup(name);
         if (!m->name)
-                goto fail;
+                return NULL;
 
         if (class != MACHINE_HOST) {
                 m->state_file = path_join("/run/systemd/machines", m->name);
                 if (!m->state_file)
-                        goto fail;
+                        return NULL;
         }
 
         m->class = class;
 
         if (hashmap_put(manager->machines, m->name, m) < 0)
-                goto fail;
+                return NULL;
 
         m->manager = manager;
 
-        return m;
-
-fail:
-        free(m->state_file);
-        free(m->name);
-        return mfree(m);
+        return TAKE_PTR(m);
 }
 
 Machine* machine_free(Machine *m) {