mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-04-12 15:10:31 +08:00
Import ITS#2039 index corruption fix from HEAD
This commit is contained in:
parent
564e666126
commit
70b8218f48
@ -48,17 +48,26 @@ static void cont_free( Datum *cont )
|
||||
#ifdef LDBM_DEBUG_IDL
|
||||
static void idl_check(ID_BLOCK *idl)
|
||||
{
|
||||
int i;
|
||||
int i, max;
|
||||
ID_BLOCK last;
|
||||
|
||||
if( ID_BLOCK_INDIRECT(idl) || ID_BLOCK_ALLIDS(idl)
|
||||
|| ID_BLOCK_NIDS(idl) <= 1 )
|
||||
if( ID_BLOCK_ALLIDS(idl) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
if( ID_BLOCK_INDIRECT(idl) )
|
||||
{
|
||||
for ( max = 0; ID_BLOCK_ID(idl, max) != NOID; max++ ) ;
|
||||
} else
|
||||
{
|
||||
max = ID_BLOCK_NIDS(idl);
|
||||
}
|
||||
|
||||
if (max <= 1)
|
||||
return;
|
||||
|
||||
for( last = ID_BLOCK_ID(idl, 0), i = 1;
|
||||
i < ID_BLOCK_NIDS(idl);
|
||||
i < max;
|
||||
last = ID_BLOCK_ID(idl, i), i++ )
|
||||
{
|
||||
assert (last < ID_BLOCK_ID(idl, i) );
|
||||
@ -526,7 +535,7 @@ idl_insert_key(
|
||||
if ( !first && !ID_BLOCK_NOID(idl, i + 1) ) {
|
||||
/* read it in */
|
||||
cont_alloc( &k2, &key );
|
||||
cont_id( &k2, ID_BLOCK_ID(idl, i) );
|
||||
cont_id( &k2, ID_BLOCK_ID(idl, i + 1) );
|
||||
if ( (tmp2 = idl_fetch_one( be, db, k2 )) == NULL ) {
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"idl_insert_key: idl_fetch_one returned NULL\n",
|
||||
|
Loading…
x
Reference in New Issue
Block a user