mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-28 18:49:34 -05:00
ITS#6341 removal of last entry from cache caused corruption in the lru list
This commit is contained in:
parent
68b914d72b
commit
96ce821037
1 changed files with 8 additions and 4 deletions
|
|
@ -106,10 +106,14 @@ bdb_cache_entryinfo_free( Cache *cache, EntryInfo *ei )
|
|||
}
|
||||
|
||||
#define LRU_DEL( c, e ) do { \
|
||||
if ( e == (c)->c_lruhead ) (c)->c_lruhead = e->bei_lruprev; \
|
||||
if ( e == (c)->c_lrutail ) (c)->c_lrutail = e->bei_lruprev; \
|
||||
e->bei_lrunext->bei_lruprev = e->bei_lruprev; \
|
||||
e->bei_lruprev->bei_lrunext = e->bei_lrunext; \
|
||||
if ( e == e->bei_lruprev ) { \
|
||||
(c)->c_lruhead = (c)->c_lrutail = NULL; \
|
||||
} else { \
|
||||
if ( e == (c)->c_lruhead ) (c)->c_lruhead = e->bei_lruprev; \
|
||||
if ( e == (c)->c_lrutail ) (c)->c_lrutail = e->bei_lruprev; \
|
||||
e->bei_lrunext->bei_lruprev = e->bei_lruprev; \
|
||||
e->bei_lruprev->bei_lrunext = e->bei_lrunext; \
|
||||
} \
|
||||
e->bei_lruprev = NULL; \
|
||||
} while ( 0 )
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue