mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
ITS#5332 someone else may free the entry as soon as we unlock it
This commit is contained in:
parent
f481ffef9c
commit
a3262ff239
@ -251,15 +251,17 @@ bdb_cache_return_entry_rw( struct bdb_info *bdb, Entry *e,
|
||||
EntryInfo *ei;
|
||||
int free = 0;
|
||||
|
||||
bdb_cache_entry_db_unlock( bdb, lock );
|
||||
ei = e->e_private;
|
||||
bdb_cache_entryinfo_lock( ei );
|
||||
if ( ei->bei_state & CACHE_ENTRY_NOT_CACHED ) {
|
||||
ei->bei_e = NULL;
|
||||
ei->bei_state ^= CACHE_ENTRY_NOT_CACHED;
|
||||
free = 1;
|
||||
bdb_cache_entry_db_unlock( bdb, lock );
|
||||
if ( ei ) {
|
||||
bdb_cache_entryinfo_lock( ei );
|
||||
if ( ei->bei_state & CACHE_ENTRY_NOT_CACHED ) {
|
||||
ei->bei_e = NULL;
|
||||
ei->bei_state ^= CACHE_ENTRY_NOT_CACHED;
|
||||
free = 1;
|
||||
}
|
||||
bdb_cache_entryinfo_unlock( ei );
|
||||
}
|
||||
bdb_cache_entryinfo_unlock( ei );
|
||||
if ( free ) {
|
||||
e->e_private = NULL;
|
||||
bdb_entry_return( e );
|
||||
|
Loading…
Reference in New Issue
Block a user