Set/clear mp_pad, md_pad (MDB_DUPFIXED data size).
authorHallvard Furuseth <hallvard@openldap.org>
Wed, 20 May 2015 02:04:38 +0000 (04:04 +0200)
committerHallvard Furuseth <hallvard@openldap.org>
Wed, 20 May 2015 02:04:38 +0000 (04:04 +0200)
mdb_xcursor_init1(): md_pad is only used when MDB_DUPFIXED.
mdb_page_split():    Copy mp_pad too. Used by mdb_page_list().

libraries/liblmdb/mdb.c

index 828c264..5423575 100644 (file)
@@ -7190,7 +7190,7 @@ mdb_xcursor_init1(MDB_cursor *mc, MDB_node *node)
                mx->mx_cursor.mc_flags = C_SUB;
        } else {
                MDB_page *fp = NODEDATA(node);
-               mx->mx_db.md_pad = mc->mc_pg[mc->mc_top]->mp_pad;
+               mx->mx_db.md_pad = 0;
                mx->mx_db.md_flags = 0;
                mx->mx_db.md_depth = 1;
                mx->mx_db.md_branch_pages = 0;
@@ -8130,6 +8130,7 @@ mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno
        /* Create a right sibling. */
        if ((rc = mdb_page_new(mc, mp->mp_flags, 1, &rp)))
                return rc;
+       rp->mp_pad = mp->mp_pad;
        DPRINTF(("new right sibling: page %"Z"u", rp->mp_pgno));
 
        if (mc->mc_snum < 2) {