From: Lennart Poettering Date: Fri, 29 Apr 2016 09:18:53 +0000 (+0200) Subject: core: rerun GC logic for a unit that loses a reference X-Git-Tag: v230~109^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b75102e5bf4cf249052d42be955d403e3e03b47c;p=thirdparty%2Fsystemd.git core: rerun GC logic for a unit that loses a reference Let's make sure when we drop a reference to a unit, that we run the GC queue on it again. This (together with the previous commit) should deal with the GC issues pointed out in: https://github.com/systemd/systemd/pull/2993#issuecomment-215331189 --- diff --git a/src/core/unit.c b/src/core/unit.c index 6c0684225a3..81cd7ee2b81 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -3222,6 +3222,10 @@ void unit_ref_unset(UnitRef *ref) { if (!ref->unit) return; + /* We are about to drop a reference to the unit, make sure the garbage collection has a look at it as it might + * be unreferenced now. */ + unit_add_to_gc_queue(ref->unit); + LIST_REMOVE(refs, ref->unit->refs, ref); ref->unit = NULL; }