From b4b942582c78bc48a6b5f2906997fcdaf5195375 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Wed, 12 Mar 2003 13:42:29 +0000 Subject: [PATCH] ITS#2348 fix from HEAD --- servers/slapd/back-ldbm/idl.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/servers/slapd/back-ldbm/idl.c b/servers/slapd/back-ldbm/idl.c index 64c1cc7087..d87dfa7ee4 100644 --- a/servers/slapd/back-ldbm/idl.c +++ b/servers/slapd/back-ldbm/idl.c @@ -478,15 +478,9 @@ idl_insert_key( */ /* select the block to try inserting into *//* XXX linear search XXX */ - for ( i = 0; !ID_BLOCK_NOID(idl, i) && id > ID_BLOCK_ID(idl, i); i++ ) + for ( i = 0; !ID_BLOCK_NOID(idl, i) && id >= ID_BLOCK_ID(idl, i); i++ ) ; /* NULL */ - /* The ID already exists in the IDL, no insert needed */ - if ( ID_BLOCK_ID( idl, i ) == id ) { - idl_free( idl ); - return 0; - } - if ( i != 0 ) { i--; first = 0; @@ -494,6 +488,11 @@ idl_insert_key( first = 1; } + /* At this point the following condition must be true: + * ID_BLOCK_ID(idl, i) <= id && id < ID_BLOCK_ID(idl, i+1) + * except when i is the first or the last block. + */ + /* get the block */ cont_alloc( &k2, &key ); cont_id( &k2, ID_BLOCK_ID(idl, i) ); -- 2.39.5