mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-12 10:54:48 +08:00
parent
f80171e079
commit
8c1d95a438
@ -4110,16 +4110,18 @@ mdb_page_search(MDB_cursor *mc, MDB_val *key, int flags)
|
||||
if (*mc->mc_dbflag & DB_STALE) {
|
||||
MDB_val data;
|
||||
int exact = 0;
|
||||
uint16_t flags;
|
||||
MDB_node *leaf = mdb_node_search(&mc2,
|
||||
&mc->mc_dbx->md_name, &exact);
|
||||
if (!exact)
|
||||
return MDB_NOTFOUND;
|
||||
mdb_node_read(mc->mc_txn, leaf, &data);
|
||||
memcpy(&flags, ((char *) data.mv_data + offsetof(MDB_db, md_flags)),
|
||||
sizeof(uint16_t));
|
||||
/* The txn may not know this DBI, or another process may
|
||||
* have dropped and recreated the DB with other flags.
|
||||
*/
|
||||
if (mc->mc_db->md_flags != *(uint16_t *)
|
||||
((char *) data.mv_data + offsetof(MDB_db, md_flags)))
|
||||
if (mc->mc_db->md_flags != flags)
|
||||
return MDB_INCOMPATIBLE;
|
||||
memcpy(mc->mc_db, data.mv_data, sizeof(MDB_db));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user