From 21a95f4309ffaa7a13d5f096be80433f1eb91791 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Wed, 12 Mar 2003 13:40:54 +0000 Subject: [PATCH] ITS#2348 - revert previous patch, use patch from ITS --- servers/slapd/back-ldbm/idl.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/servers/slapd/back-ldbm/idl.c b/servers/slapd/back-ldbm/idl.c index fcfeebcf18..16c3e6da51 100644 --- a/servers/slapd/back-ldbm/idl.c +++ b/servers/slapd/back-ldbm/idl.c @@ -553,19 +553,13 @@ idl_insert_key( #ifndef USE_INDIRECT_NIDS /* 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 */ #else i = idl_find(idl, id); - if (ID_BLOCK_ID(idl, i) < id) + if (ID_BLOCK_ID(idl, i) <= id) i++; #endif - /* 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; @@ -573,6 +567,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