chiark / gitweb /
manager: let manager_free() handle NULLs
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sat, 8 Nov 2014 15:06:12 +0000 (10:06 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 24 Nov 2014 00:17:28 +0000 (19:17 -0500)
This makes the calling code a bit simpler.

src/core/main.c
src/core/manager.c
src/core/manager.h

index 64acdf7..b44e7f9 100644 (file)
@@ -1799,10 +1799,7 @@ int main(int argc, char *argv[]) {
 finish:
         pager_close();
 
-        if (m) {
-                manager_free(m);
-                m = NULL;
-        }
+        m = manager_free(m);
 
         for (j = 0; j < ELEMENTSOF(arg_default_rlimit); j++) {
                 free(arg_default_rlimit[j]);
index 7abc8a9..4c3264b 100644 (file)
@@ -889,11 +889,12 @@ static void manager_clear_jobs_and_units(Manager *m) {
         m->n_running_jobs = 0;
 }
 
-void manager_free(Manager *m) {
+Manager* manager_free(Manager *m) {
         UnitType c;
         int i;
 
-        assert(m);
+        if (!m)
+                return NULL;
 
         manager_clear_jobs_and_units(m);
 
@@ -955,6 +956,7 @@ void manager_free(Manager *m) {
         hashmap_free(m->units_requiring_mounts_for);
 
         free(m);
+        return NULL;
 }
 
 int manager_enumerate(Manager *m) {
index ab72548..0253502 100644 (file)
@@ -296,7 +296,7 @@ struct Manager {
 };
 
 int manager_new(SystemdRunningAs running_as, bool test_run, Manager **m);
-void manager_free(Manager *m);
+Manager* manager_free(Manager *m);
 
 int manager_enumerate(Manager *m);
 int manager_startup(Manager *m, FILE *serialization, FDSet *fds);