Skip to content
Snippets Groups Projects
Commit e39f9848 authored by Howard Chu's avatar Howard Chu
Browse files

Fix previous commit, check for dup in avl_insert

parent 349e05ff
No related branches found
No related tags found
No related merge requests found
......@@ -469,19 +469,24 @@ bdb_idl_fetch_key(
BDB_IDL_CPY( ee->idl, ids );
ber_dupbv( &ee->kstr, &idl_tmp.kstr );
ldap_pvt_thread_mutex_lock( &bdb->bi_idl_tree_mutex );
avl_insert( &bdb->bi_idl_tree, (caddr_t) ee, (AVL_CMP) bdb_idl_entry_cmp, avl_dup_error );
IDL_LRU_ADD( bdb, ee );
if ( ++bdb->bi_idl_cache_size > bdb->bi_idl_cache_max_size ) {
int i = 0;
while ( bdb->bi_idl_lru_tail != NULL && i < 10 ) {
ee = bdb->bi_idl_lru_tail;
avl_delete( &bdb->bi_idl_tree, (caddr_t) ee, (AVL_CMP) bdb_idl_entry_cmp );
IDL_LRU_DELETE( bdb, ee );
i++;
--bdb->bi_idl_cache_size;
free( ee->kstr.bv_val );
free( ee->idl );
free( ee );
if ( avl_insert( &bdb->bi_idl_tree, (caddr_t) ee, (AVL_CMP) bdb_idl_entry_cmp, avl_dup_error )) {
free( ee->kstr.bv_val );
free( ee->idl );
free( ee );
} else {
IDL_LRU_ADD( bdb, ee );
if ( ++bdb->bi_idl_cache_size > bdb->bi_idl_cache_max_size ) {
int i = 0;
while ( bdb->bi_idl_lru_tail != NULL && i < 10 ) {
ee = bdb->bi_idl_lru_tail;
avl_delete( &bdb->bi_idl_tree, (caddr_t) ee, (AVL_CMP) bdb_idl_entry_cmp );
IDL_LRU_DELETE( bdb, ee );
i++;
--bdb->bi_idl_cache_size;
free( ee->kstr.bv_val );
free( ee->idl );
free( ee );
}
}
}
ldap_pvt_thread_mutex_unlock( &bdb->bi_idl_tree_mutex );
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment