chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
systemctl: Fix wrong assertion test
[elogind.git]
/
src
/
journal
/
mmap-cache.c
diff --git
a/src/journal/mmap-cache.c
b/src/journal/mmap-cache.c
index 4be3f7e96608bcb947d27e13e7a7bc6a184d9f2f..251aefe12113c3805583ab04a2cf9a0a9b48128d 100644
(file)
--- a/
src/journal/mmap-cache.c
+++ b/
src/journal/mmap-cache.c
@@
-130,6
+130,7
@@
static void window_free(Window *w) {
assert(w);
window_unlink(w);
assert(w);
window_unlink(w);
+ w->cache->n_windows--;
free(w);
}
free(w);
}
@@
-157,6
+158,7
@@
static Window *window_add(MMapCache *m) {
w = new0(Window, 1);
if (!w)
return NULL;
w = new0(Window, 1);
if (!w)
return NULL;
+ m->n_windows++;
} else {
/* Reuse an existing one */
} else {
/* Reuse an existing one */
@@
-181,7
+183,7
@@
static void context_detach_window(Context *c) {
c->window = NULL;
LIST_REMOVE(Context, by_window, w->contexts, c);
c->window = NULL;
LIST_REMOVE(Context, by_window, w->contexts, c);
- if (!w->contexts) {
+ if (!w->contexts
&& !w->keep_always
) {
/* Not used anymore? */
LIST_PREPEND(Window, unused, c->cache->unused, w);
if (!c->cache->last_unused)
/* Not used anymore? */
LIST_PREPEND(Window, unused, c->cache->unused, w);
if (!c->cache->last_unused)
@@
-200,11
+202,11
@@
static void context_attach_window(Context *c, Window *w) {
context_detach_window(c);
context_detach_window(c);
- if (
!w->contexts
) {
+ if (
w->in_unused
) {
/* Used again? */
LIST_REMOVE(Window, unused, c->cache->unused, w);
/* Used again? */
LIST_REMOVE(Window, unused, c->cache->unused, w);
- if (
!c->cache->last_unused
)
- c->cache->last_unused = w;
+ if (
c->cache->last_unused == w
)
+ c->cache->last_unused = w
->unused_prev
;
w->in_unused = false;
}
w->in_unused = false;
}