mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-18 11:05:48 +08:00
ITS#8321 fix mdb_cursor_shadow()
Set a valid txn so that cursor fixup code works on the shadows
This commit is contained in:
parent
0ec3967e1d
commit
94831f7c3f
@ -2489,14 +2489,15 @@ mdb_cursor_shadow(MDB_txn *src, MDB_txn *dst)
|
||||
*bk = *mc;
|
||||
mc->mc_backup = bk;
|
||||
mc->mc_db = &dst->mt_dbs[i];
|
||||
/* Kill pointers into src - and dst to reduce abuse: The
|
||||
* user may not use mc until dst ends. Otherwise we'd...
|
||||
/* Kill pointers into src to reduce abuse: The
|
||||
* user may not use mc until dst ends. But we need a valid
|
||||
* txn pointer here for cursor fixups to keep working.
|
||||
*/
|
||||
mc->mc_txn = NULL; /* ...set this to dst */
|
||||
mc->mc_dbflag = NULL; /* ...and &dst->mt_dbflags[i] */
|
||||
mc->mc_txn = dst;
|
||||
mc->mc_dbflag = &dst->mt_dbflags[i];
|
||||
if ((mx = mc->mc_xcursor) != NULL) {
|
||||
*(MDB_xcursor *)(bk+1) = *mx;
|
||||
mx->mx_cursor.mc_txn = NULL; /* ...and dst. */
|
||||
mx->mx_cursor.mc_txn = dst;
|
||||
}
|
||||
mc->mc_next = dst->mt_cursors[i];
|
||||
dst->mt_cursors[i] = mc;
|
||||
|
Loading…
Reference in New Issue
Block a user