MDB_node *node;
MDB_page *mp = mc->mc_pg[mc->mc_top];
MDB_page *ofp = NULL; /* overflow page */
+ void *ndata;
DKBUF;
mdb_cassert(mc, mp->mp_upper >= mp->mp_lower);
if (key != NULL)
node_size += key->mv_size;
if (IS_LEAF(mp)) {
- mdb_cassert(mc, data);
+ mdb_cassert(mc, key && data);
if (F_ISSET(flags, F_BIGDATA)) {
/* Data already on overflow page. */
node_size += sizeof(pgno_t);
memcpy(NODEKEY(node), key->mv_data, key->mv_size);
if (IS_LEAF(mp)) {
- mdb_cassert(mc, key);
+ ndata = NODEDATA(node);
if (ofp == NULL) {
if (F_ISSET(flags, F_BIGDATA))
- memcpy(node->mn_data + key->mv_size, data->mv_data,
- sizeof(pgno_t));
+ memcpy(ndata, data->mv_data, sizeof(pgno_t));
else if (F_ISSET(flags, MDB_RESERVE))
- data->mv_data = node->mn_data + key->mv_size;
+ data->mv_data = ndata;
else
- memcpy(node->mn_data + key->mv_size, data->mv_data,
- data->mv_size);
+ memcpy(ndata, data->mv_data, data->mv_size);
} else {
- memcpy(node->mn_data + key->mv_size, &ofp->mp_pgno,
- sizeof(pgno_t));
+ memcpy(ndata, &ofp->mp_pgno, sizeof(pgno_t));
+ ndata = METADATA(ofp);
if (F_ISSET(flags, MDB_RESERVE))
- data->mv_data = METADATA(ofp);
+ data->mv_data = ndata;
else
- memcpy(METADATA(ofp), data->mv_data, data->mv_size);
+ memcpy(ndata, data->mv_data, data->mv_size);
}
}