From: Howard Chu Date: Sat, 17 Jan 2004 17:44:23 +0000 (+0000) Subject: ITS#2917 don't try to use uninit'd mutex X-Git-Tag: OPENLDAP_REL_ENG_2_1_26~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0c7ff0f1df7fddbbd7f533c3ed6dff633bc7000d;p=thirdparty%2Fopenldap.git ITS#2917 don't try to use uninit'd mutex --- diff --git a/servers/slapd/back-bdb/init.c b/servers/slapd/back-bdb/init.c index 8b28447278..9ffca20386 100644 --- a/servers/slapd/back-bdb/init.c +++ b/servers/slapd/back-bdb/init.c @@ -461,17 +461,19 @@ bdb_db_close( BackendDB *be ) bdb_cache_release_all (&bdb->bi_cache); #ifdef SLAP_IDL_CACHE - ldap_pvt_thread_mutex_lock ( &bdb->bi_idl_tree_mutex ); - 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_mutex_lock ( &bdb->bi_idl_tree_mutex ); + 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_mutex_unlock ( &bdb->bi_idl_tree_mutex ); } - ldap_pvt_thread_mutex_unlock ( &bdb->bi_idl_tree_mutex ); #endif return 0;