From: Lennart Poettering Date: Sat, 10 Apr 2010 02:43:21 +0000 (+0200) Subject: unit: free data from merged unit when we don't need it anymore X-Git-Tag: 0.git+20100605+dfd8ee-1~187 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3616a49cb0140ad1832ed861d9d9eb1ae632398e;p=systemd unit: free data from merged unit when we don't need it anymore --- diff --git a/unit.c b/unit.c index fe502dbf..d4f0538b 100644 --- a/unit.c +++ b/unit.c @@ -424,11 +424,16 @@ int unit_merge(Unit *u, Unit *other) { for (d = 0; d < _UNIT_DEPENDENCY_MAX; d++) merge_dependencies(u, other, d); - unit_add_to_dbus_queue(u); - other->meta.load_state = UNIT_MERGED; other->meta.merged_into = u; + /* If there is still some data attached to the other node, we + * don't need it anymore, and can free it. */ + if (other->meta.load_state != UNIT_STUB) + if (UNIT_VTABLE(other)->done) + UNIT_VTABLE(other)->done(other); + + unit_add_to_dbus_queue(u); unit_add_to_cleanup_queue(other); return 0;