[systemd-commits] src/manager.c src/unit.c

Lennart Poettering lennart at kemper.freedesktop.org
Fri Jun 4 13:31:39 PDT 2010


 src/manager.c |    3 ++-
 src/unit.c    |    8 ++++----
 2 files changed, 6 insertions(+), 5 deletions(-)

New commits:
commit a013b84b49a7d4a30196949e24ea03066e227626
Author: Lennart Poettering <lennart at poettering.net>
Date:   Fri Jun 4 22:31:33 2010 +0200

    unit: avoid assert on daemon reload

diff --git a/src/manager.c b/src/manager.c
index 735a1aa..e37aa83 100644
--- a/src/manager.c
+++ b/src/manager.c
@@ -543,6 +543,8 @@ static void manager_clear_jobs_and_units(Manager *m) {
 
         assert(m);
 
+        manager_dispatch_cleanup_queue(m);
+
         while ((j = hashmap_first(m->transaction_jobs)))
                 job_free(j);
 
@@ -555,7 +557,6 @@ void manager_free(Manager *m) {
 
         assert(m);
 
-        manager_dispatch_cleanup_queue(m);
         manager_clear_jobs_and_units(m);
 
         for (c = 0; c < _UNIT_TYPE_MAX; c++)
diff --git a/src/unit.c b/src/unit.c
index c080919..695044a 100644
--- a/src/unit.c
+++ b/src/unit.c
@@ -319,6 +319,10 @@ void unit_free(Unit *u) {
 
         bus_unit_send_removed_signal(u);
 
+        if (u->meta.load_state != UNIT_STUB)
+                if (UNIT_VTABLE(u)->done)
+                        UNIT_VTABLE(u)->done(u);
+
         /* Detach from next 'bigger' objects */
         SET_FOREACH(t, u->meta.names, i)
                 hashmap_remove_value(u->meta.manager->units, t, u);
@@ -344,10 +348,6 @@ void unit_free(Unit *u) {
         if (u->meta.job)
                 job_free(u->meta.job);
 
-        if (u->meta.load_state != UNIT_STUB)
-                if (UNIT_VTABLE(u)->done)
-                        UNIT_VTABLE(u)->done(u);
-
         cgroup_bonding_free_list(u->meta.cgroup_bondings);
 
         for (d = 0; d < _UNIT_DEPENDENCY_MAX; d++)


More information about the systemd-commits mailing list