mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-01-02 13:09:42 -05:00
ITS#8321 mdb_put cursor needs tracking too
This commit is contained in:
parent
cf8677e1b8
commit
db02a71dd8
1 changed files with 7 additions and 2 deletions
|
|
@ -8779,7 +8779,7 @@ mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno
|
|||
m3->mc_ki[k+1] = m3->mc_ki[k];
|
||||
m3->mc_pg[k+1] = m3->mc_pg[k];
|
||||
}
|
||||
if (m3->mc_ki[0] > nkeys) {
|
||||
if (m3->mc_ki[0] >= nkeys) {
|
||||
m3->mc_ki[0] = 1;
|
||||
} else {
|
||||
m3->mc_ki[0] = 0;
|
||||
|
|
@ -8821,6 +8821,7 @@ mdb_put(MDB_txn *txn, MDB_dbi dbi,
|
|||
{
|
||||
MDB_cursor mc;
|
||||
MDB_xcursor mx;
|
||||
int rc;
|
||||
|
||||
if (!key || !data || !TXN_DBI_EXIST(txn, dbi, DB_USRVALID))
|
||||
return EINVAL;
|
||||
|
|
@ -8832,7 +8833,11 @@ mdb_put(MDB_txn *txn, MDB_dbi dbi,
|
|||
return (txn->mt_flags & MDB_TXN_RDONLY) ? EACCES : MDB_BAD_TXN;
|
||||
|
||||
mdb_cursor_init(&mc, txn, dbi, &mx);
|
||||
return mdb_cursor_put(&mc, key, data, flags);
|
||||
mc.mc_next = txn->mt_cursors[dbi];
|
||||
txn->mt_cursors[dbi] = &mc;
|
||||
rc = mdb_cursor_put(&mc, key, data, flags);
|
||||
txn->mt_cursors[dbi] = mc.mc_next;
|
||||
return rc;
|
||||
}
|
||||
|
||||
#ifndef MDB_WBUF
|
||||
|
|
|
|||
Loading…
Reference in a new issue