X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=manager.c;h=5cb5c3d2d2f3a8008453407c22f1dd6ada4134d3;hb=c9c0cadbf8d8e4c1b99c35a8150c08558f361ebd;hp=f10345b43a9b83563156fa2c4723b5960fb77343;hpb=701cc384c283206a29b21e4e7302e5cf5f2d9433;p=elogind.git diff --git a/manager.c b/manager.c index f10345b43..5cb5c3d2d 100644 --- a/manager.c +++ b/manager.c @@ -405,7 +405,7 @@ static void unit_gc_sweep(Unit *u, int gc_marker) { u->meta.gc_marker == -gc_marker) return; - if (!u->meta.in_cleanup_queue) + if (u->meta.in_cleanup_queue) goto bad; if (unit_check_gc(u)) @@ -441,8 +441,10 @@ static unsigned manager_dispatch_gc_queue(Manager *m) { log_debug("Running GC..."); - gc_marker = m->gc_marker; - m->gc_marker = MIN(0, m->gc_marker + 1); + gc_marker = ++m->gc_marker; + + if (m->gc_marker < 0) + m->gc_marker = 1; while ((meta = m->gc_queue)) { assert(meta->in_gc_queue);