From 7f344029eb39c23cde3eaa4feb40fb5ec8609b65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20B=C3=BChler?= Date: Sat, 7 Mar 2009 00:08:07 +0100 Subject: [PATCH] Fix stat-cache race condition --- src/stat_cache.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/stat_cache.c b/src/stat_cache.c index 70a08b5..23fba21 100644 --- a/src/stat_cache.c +++ b/src/stat_cache.c @@ -309,9 +309,6 @@ static stat_cache_entry *stat_cache_get_internal(vrequest *vr, GString *path, gb vr->stat_cache_entry = sce; g_ptr_array_add(sce->vrequests, vr); sce->refcount = 1; - waitqueue_push(&sc->delete_queue, &sce->queue_elem); - g_hash_table_insert(sc->entries, sce->data.path, sce); - g_async_queue_push(sc->job_queue_out, sce); sc->misses++; if (dir) { @@ -321,6 +318,10 @@ static stat_cache_entry *stat_cache_get_internal(vrequest *vr, GString *path, gb sce->type = STAT_CACHE_ENTRY_SINGLE; } + waitqueue_push(&sc->delete_queue, &sce->queue_elem); + g_hash_table_insert(sc->entries, sce->data.path, sce); + g_async_queue_push(sc->job_queue_out, sce); + return NULL; } }