From: Timo Sirainen Date: Tue, 2 Oct 2012 20:12:07 +0000 (+0300) Subject: lib-master: Fixed crashes with settings cache. X-Git-Tag: 2.2.alpha1~20^2~46 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0b617d3e072174036da356c620c2b20563a2d87f;p=thirdparty%2Fdovecot%2Fcore.git lib-master: Fixed crashes with settings cache. --- diff --git a/src/lib-master/master-service-settings-cache.c b/src/lib-master/master-service-settings-cache.c index 0cfb3ae583..51304b7686 100644 --- a/src/lib-master/master-service-settings-cache.c +++ b/src/lib-master/master-service-settings-cache.c @@ -83,6 +83,7 @@ void master_service_settings_cache_deinit(struct master_service_settings_cache * } for (entry = cache->oldest; entry != NULL; entry = next) { next = entry->next; + i_assert(entry->parser != cache->global_parser); settings_parser_deinit(&entry->parser); pool_unref(&entry->pool); } @@ -146,8 +147,10 @@ cache_find(struct master_service_settings_cache *cache, } if (entry != NULL) { - DLLIST2_REMOVE(&cache->oldest, &cache->newest, entry); - DLLIST2_APPEND(&cache->oldest, &cache->newest, entry); + if (entry->parser != cache->global_parser) { + DLLIST2_REMOVE(&cache->oldest, &cache->newest, entry); + DLLIST2_APPEND(&cache->oldest, &cache->newest, entry); + } *parser_r = entry->parser; return TRUE; }