]> git.sur5r.net Git - openldap/commitdiff
ITS#5578 fix binary search
authorHoward Chu <hyc@openldap.org>
Sat, 5 Jul 2008 23:26:41 +0000 (23:26 +0000)
committerHoward Chu <hyc@openldap.org>
Sat, 5 Jul 2008 23:26:41 +0000 (23:26 +0000)
servers/slapd/attr.c

index e54ed671be4c0f7b8f3d300c4bbeb59fc50568d2..8204fa7be860406b9f16cc9505a7dff3506b9eb1 100644 (file)
@@ -324,17 +324,16 @@ attr_valfind(
                while ( 0 < n ) {
                        unsigned pivot = n >> 1;
                        i = base + pivot;
-                       if ( i >= a->a_numvals ) {
-                               i = a->a_numvals - 1;
-                               break;
-                       }
                        rc = value_match( &match, a->a_desc, mr, flags,
                                &a->a_nvals[i], cval, &text );
                        if ( rc == LDAP_SUCCESS && match == 0 )
                                break;
-                       n = pivot;
-                       if ( match < 0 )
+                       if ( match < 0 ) {
                                base = i+1;
+                               n -= pivot+1;
+                       } else {
+                               n = pivot;
+                       }
                }
                if ( match < 0 )
                        i++;