#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) );
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",