From eff16314282d683e0b6f6e8abfc0f51091eebce2 Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Wed, 18 Apr 2007 10:24:10 +0000 Subject: Fix spurious cache entries remaining after renaming a directory --- cache.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'cache.c') diff --git a/cache.c b/cache.c index d17e735..ab378a3 100644 --- a/cache.c +++ b/cache.c @@ -116,9 +116,20 @@ static void cache_invalidate_dir(const char *path) pthread_mutex_unlock(&cache.lock); } +static int cache_del_children(const char *key, void *val_, const char *path) +{ + (void) val_; + if (strncmp(key, path, strlen(path)) == 0) + return TRUE; + else + return FALSE; +} + static void cache_do_rename(const char *from, const char *to) { pthread_mutex_lock(&cache.lock); + g_hash_table_foreach_remove(cache.table, (GHRFunc) cache_del_children, + (char *) from); cache_purge(from); cache_purge(to); cache_purge_parent(from); -- cgit v1.2.3