chiark / gitweb /
unit: when deserializing cgroup path add it back into cgroup hashmap
authorLennart Poettering <lennart@poettering.net>
Wed, 10 Jul 2013 19:17:37 +0000 (21:17 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 10 Jul 2013 21:41:03 +0000 (23:41 +0200)
Also, properly remove cgroup path from hashmap when freeing unit.

src/core/unit.c

index 70cdd3d943dbcabc91e38d63343793566fd1f77c..5bc57e25c6bb2cc8753913bf25ac9c2ba4a52a0b 100644 (file)
@@ -433,7 +433,11 @@ void unit_free(Unit *u) {
         if (u->in_cgroup_queue)
                 LIST_REMOVE(Unit, cgroup_queue, u->manager->cgroup_queue, u);
 
-        free(u->cgroup_path);
+        if (u->cgroup_path) {
+                hashmap_remove(u->manager->cgroup_unit, u->cgroup_path);
+                free(u->cgroup_path);
+        }
+
         free(u->description);
         strv_free(u->documentation);
         free(u->fragment_path);
@@ -2308,6 +2312,8 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) {
 
                         free(u->cgroup_path);
                         u->cgroup_path = s;
+
+                        hashmap_put(u->manager->cgroup_unit, s, u);
                         continue;
                 }