From: Pierangelo Masarati Date: Tue, 8 Apr 2003 23:22:10 +0000 (+0000) Subject: free cache only if required X-Git-Tag: OPENLDAP_REL_ENG_2_2_0ALPHA~422 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=06a99afbdbb4c7840249e29cbeff6ed061dc8779;p=openldap free cache only if required --- 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;