diff --git a/servers/slapd/back-bdb2/idl.c b/servers/slapd/back-bdb2/idl.c index 3c75278475..e5a2867c5b 100644 --- a/servers/slapd/back-bdb2/idl.c +++ b/servers/slapd/back-bdb2/idl.c @@ -644,10 +644,10 @@ bdb2i_idl_insert( ID_BLOCK **idl, ID id, unsigned int maxids ) (ID_BLOCK_NMAX(*idl) + ID_BLOCK_IDS_OFFSET) * sizeof(ID) ); } - /* make a slot for the new id *//* XXX bubble move XXX */ - for ( j = ID_BLOCK_NIDS(*idl); j != i; j-- ) { - ID_BLOCK_ID(*idl, j) = ID_BLOCK_ID(*idl, j-1); - } + /* make a slot for the new id */ + SAFEMEMCPY( &ID_BLOCK_ID(*idl, i), &ID_BLOCK_ID(*idl, i+1), + ID_BLOCKS_NIDS(*idl) - i ); + ID_BLOCK_ID(*idl, i) = id; ID_BLOCK_NIDS(*idl)++; (void) memset(