]> git.sur5r.net Git - openldap/commitdiff
Fix bdb_idl_union of range and list (related to ITS#1969
authorHoward Chu <hyc@openldap.org>
Wed, 31 Jul 2002 23:43:56 +0000 (23:43 +0000)
committerHoward Chu <hyc@openldap.org>
Wed, 31 Jul 2002 23:43:56 +0000 (23:43 +0000)
servers/slapd/back-bdb/idl.c

index 09f86a7ccffd1c8507975c940ef42af46d70de77..28c9a725e6e499beb5333a4e55d5bc5005358275 100644 (file)
@@ -1014,8 +1014,11 @@ bdb_idl_union(
        }
 
        if ( BDB_IDL_IS_RANGE( a ) || BDB_IDL_IS_RANGE(b) ) {
-over:          a[1] = IDL_MIN( BDB_IDL_FIRST(a), BDB_IDL_FIRST(b) );
-               a[2] = IDL_MAX( BDB_IDL_LAST(a), BDB_IDL_LAST(b) );
+over:          ida = IDL_MIN( BDB_IDL_FIRST(a), BDB_IDL_FIRST(b) );
+               idb = IDL_MAX( BDB_IDL_LAST(a), BDB_IDL_LAST(b) );
+               a[0] = NOID;
+               a[1] = ida;
+               a[2] = idb;
                return 0;
        }
 
@@ -1028,7 +1031,6 @@ over:             a[1] = IDL_MIN( BDB_IDL_FIRST(a), BDB_IDL_FIRST(b) );
        while( ida != NOID || idb != NOID ) {
                if ( ida < idb ) {
                        if( ++cursorc > BDB_IDL_UM_MAX ) {
-                               a[0] = NOID;
                                goto over;
                        }
                        b[cursorc] = ida;