chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
manager: fix GC logic
[elogind.git]
/
manager.c
diff --git
a/manager.c
b/manager.c
index f10345b43a9b83563156fa2c4723b5960fb77343..5cb5c3d2d2f3a8008453407c22f1dd6ada4134d3 100644
(file)
--- 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;
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))
goto bad;
if (unit_check_gc(u))
@@
-441,8
+441,10
@@
static unsigned manager_dispatch_gc_queue(Manager *m) {
log_debug("Running GC...");
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);
while ((meta = m->gc_queue)) {
assert(meta->in_gc_queue);