mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
ITS#7515 Reject conflicting page versions.
If mdb_page_touch() sees a page in txn's dirty_list, that is the page version txn's cursors should have. Fail if the user may be seeing and depending on another version.
This commit is contained in:
parent
be47ca7667
commit
a77767013a
@ -1560,9 +1560,10 @@ mdb_page_touch(MDB_cursor *mc)
|
||||
if (dl[0].mid) {
|
||||
unsigned x = mdb_mid2l_search(dl, pgno);
|
||||
if (x <= dl[0].mid && dl[x].mid == pgno) {
|
||||
np = dl[x].mptr;
|
||||
if (mp != np)
|
||||
mc->mc_pg[mc->mc_top] = np;
|
||||
if (mp != dl[x].mptr) { /* bad cursor? */
|
||||
mc->mc_flags &= ~(C_INITIALIZED|C_EOF);
|
||||
return MDB_CORRUPTED;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user