summaryrefslogtreecommitdiff
path: root/unit.c
diff options
context:
space:
mode:
Diffstat (limited to 'unit.c')
-rw-r--r--unit.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/unit.c b/unit.c
index 7954c04185..624ea0cb54 100644
--- a/unit.c
+++ b/unit.c
@@ -147,6 +147,9 @@ int unit_add_name(Unit *u, const char *text) {
return r;
}
+ if (u->meta.type == _UNIT_TYPE_INVALID)
+ LIST_PREPEND(Meta, units_per_type, u->meta.manager->units_per_type[t], &u->meta);
+
u->meta.type = t;
if (!u->meta.id)
@@ -224,6 +227,9 @@ void unit_free(Unit *u) {
SET_FOREACH(t, u->meta.names, i)
hashmap_remove_value(u->meta.manager->units, t, u);
+ if (u->meta.type != _UNIT_TYPE_INVALID)
+ LIST_REMOVE(Meta, units_per_type, u->meta.manager->units_per_type[u->meta.type], &u->meta);
+
if (u->meta.in_load_queue)
LIST_REMOVE(Meta, load_queue, u->meta.manager->load_queue, &u->meta);