]> git.sur5r.net Git - openldap/commitdiff
Fix commit "Raise safe max MDB_MAXKEYSIZE."
authorHallvard Furuseth <hallvard@openldap.org>
Sat, 21 Dec 2013 11:31:57 +0000 (12:31 +0100)
committerHallvard Furuseth <hallvard@openldap.org>
Sat, 21 Dec 2013 11:31:57 +0000 (12:31 +0100)
I.e. d69d2ce2307e9d0e2167843935c386b05a869c31, it left out some changes.

libraries/liblmdb/mdb.c

index 6326dbcd7b00c99b946d2c4528d03ac8d85a5443..c2c374bbc593cb536cac1392cece210cf23e11c5 100644 (file)
@@ -4507,8 +4507,6 @@ mdb_node_search(MDB_cursor *mc, MDB_val *key, int *exactp)
        }
 #endif
 
-       assert(nkeys > 0);
-
        low = IS_LEAF(mp) ? 0 : 1;
        high = nkeys - 1;
        cmp = mc->mc_dbx->md_cmp;
@@ -4571,7 +4569,7 @@ mdb_node_search(MDB_cursor *mc, MDB_val *key, int *exactp)
                        node = NODEPTR(mp, i);
        }
        if (exactp)
-               *exactp = (rc == 0);
+               *exactp = (rc == 0 && nkeys > 0);
        /* store the key index */
        mc->mc_ki[mc->mc_top] = i;
        if (i >= nkeys)
@@ -5968,7 +5966,8 @@ prep_subDB:
                        rdata = &xdata;
                        flags |= F_DUPDATA;
                        do_sub = 1;
-                       mdb_node_del(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top], 0);
+                       if (!insert)
+                               mdb_node_del(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top], 0);
                        goto new_sub;
                }
 current: