From 06a99afbdbb4c7840249e29cbeff6ed061dc8779 Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Tue, 8 Apr 2003 23:22:10 +0000 Subject: [PATCH] free cache only if required --- servers/slapd/back-bdb/init.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/servers/slapd/back-bdb/init.c b/servers/slapd/back-bdb/init.c index 21cfe2f766..412a132da2 100644 --- a/servers/slapd/back-bdb/init.c +++ b/servers/slapd/back-bdb/init.c @@ -461,17 +461,20 @@ bdb_db_close( BackendDB *be ) bdb_cache_release_all (&bdb->bi_cache); #ifdef SLAP_IDL_CACHE - ldap_pvt_thread_rdwr_wlock ( &bdb->bi_idl_tree_rwlock ); - entry = bdb->bi_idl_lru_head; - while ( entry != NULL ) { - next_entry = entry->idl_lru_next; - avl_delete( &bdb->bi_idl_tree, (caddr_t) entry, bdb_idl_entry_cmp ); - free( entry->idl ); - free( entry->kstr.bv_val ); - free( entry ); - entry = next_entry; + if ( bdb->bi_idl_cache_max_size ) { + ldap_pvt_thread_rdwr_wlock ( &bdb->bi_idl_tree_rwlock ); + entry = bdb->bi_idl_lru_head; + while ( entry != NULL ) { + next_entry = entry->idl_lru_next; + avl_delete( &bdb->bi_idl_tree, (caddr_t) entry, + bdb_idl_entry_cmp ); + free( entry->idl ); + free( entry->kstr.bv_val ); + free( entry ); + entry = next_entry; + } + ldap_pvt_thread_rdwr_wunlock ( &bdb->bi_idl_tree_rwlock ); } - ldap_pvt_thread_rdwr_wunlock ( &bdb->bi_idl_tree_rwlock ); #endif return 0; -- 2.39.5