diff --git a/servers/slapd/sets.c b/servers/slapd/sets.c index 3393e83bf3c3a17df4b1ce645615b23b99a7e63d..1d9c38d477b85c6c6e47c8d9a422fda2e67ac917 100644 --- a/servers/slapd/sets.c +++ b/servers/slapd/sets.c @@ -239,11 +239,13 @@ slap_set_join( /* dup the shortest */ if ( llen < rlen ) { + last = llen; set = set_dup( cp, lset, SLAP_SET_LREF2REF( op_flags ) ); lset = NULL; sset = rset; } else { + last = rlen; set = set_dup( cp, rset, SLAP_SET_RREF2REF( op_flags ) ); rset = NULL; sset = lset; @@ -253,7 +255,6 @@ slap_set_join( break; } - last = slap_set_size( set ); for ( i = 0; !BER_BVISNULL( &set[ i ] ); i++ ) { for ( j = 0; !BER_BVISNULL( &sset[ j ] ); j++ ) { if ( bvmatch( &set[ i ], &sset[ j ] ) ) { @@ -288,11 +289,13 @@ slap_set_join( } else { set = set_dup( cp, lset, SLAP_SET_LREF2REF( op_flags ) ); + lset = NULL; break; } } else if ( j == 0 ) { set = set_dup( cp, rset, SLAP_SET_RREF2REF( op_flags ) ); + rset = NULL; break; }