X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=unit.c;h=624ea0cb5405c3fe4bc6c5ae67dd6dea13583f95;hb=ef734fd6c2ec4e5602bbfe2a0d26dcf39c14d2bf;hp=7954c041854fa5a35fea717af62ac4e5ab6782a5;hpb=f50e0a012340fa8dfe6ec7f0cd869f5f3a052d7a;p=elogind.git diff --git a/unit.c b/unit.c index 7954c0418..624ea0cb5 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);