From: Howard Chu Date: Mon, 18 Jul 2011 19:41:51 +0000 (-0700) Subject: ITS#6985 fix sssvlv target offset, ordering match X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=db106f89e6026eca034aac74187c5d445ad43494;p=openldap ITS#6985 fix sssvlv target offset, ordering match --- diff --git a/servers/slapd/overlays/sssvlv.c b/servers/slapd/overlays/sssvlv.c index 69b202bb42..85267a7285 100644 --- a/servers/slapd/overlays/sssvlv.c +++ b/servers/slapd/overlays/sssvlv.c @@ -515,8 +515,10 @@ range_err: } cur_node = tavl_find3( so->so_tree, sn, node_cmp, &j ); /* didn't find >= match */ - if ( j > 0 ) - cur_node = NULL; + if ( j > 0 ) { + if ( cur_node ) + cur_node = tavl_next( cur_node, TAVL_DIR_RIGHT ); + } op->o_tmpfree( sn, op->o_tmpmemctx ); if ( !cur_node ) { @@ -534,7 +536,7 @@ range_err: } for (i=0; tmp_node != cur_node; tmp_node = tavl_next( tmp_node, dir ), i++); - so->so_vlv_target = i; + so->so_vlv_target = (dir == TAVL_DIR_RIGHT) ? i+1 : so->so_nentries - i; } if ( bv.bv_val != vc->vc_value.bv_val ) op->o_tmpfree( bv.bv_val, op->o_tmpmemctx );