I found a bug where the data was not updated in a call to cursor get with GET_BOTH_RANGE
Here is what I did to fix it, but not 100% sure it covers everything correctly:
rc = mc->mc_dbx->md_dcmp(data, &d2);
if (rc) {
if (op == MDB_GET_BOTH || rc > 0)
return MDB_NOTFOUND;
data->mv_data = d2.mv_data; //added
data->mv_size = d2.mv_size; //added
rc = 0;
}
Please confirm.