mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-29 02:59:34 -05:00
ITS#8157 mdb_txn_renew0(): init after error checks
This commit is contained in:
parent
8d1f6ca782
commit
aa16d7bc0a
1 changed files with 7 additions and 9 deletions
|
|
@ -2581,15 +2581,11 @@ mdb_txn_renew0(MDB_txn *txn)
|
|||
MDB_env *env = txn->mt_env;
|
||||
MDB_txninfo *ti = env->me_txns;
|
||||
MDB_meta *meta;
|
||||
unsigned int i, nr;
|
||||
unsigned int i, nr, flags = txn->mt_flags;
|
||||
uint16_t x;
|
||||
int rc, new_notls = 0;
|
||||
|
||||
if (txn->mt_flags & MDB_TXN_RDONLY) {
|
||||
txn->mt_flags = MDB_TXN_RDONLY;
|
||||
/* Setup db info */
|
||||
txn->mt_numdbs = env->me_numdbs;
|
||||
txn->mt_dbxs = env->me_dbxs; /* mostly static anyway */
|
||||
if ((flags &= MDB_TXN_RDONLY) != 0) {
|
||||
if (!ti) {
|
||||
meta = env->me_metas[ mdb_env_pick_meta(env) ];
|
||||
txn->mt_txnid = meta->mm_txnid;
|
||||
|
|
@ -2651,6 +2647,7 @@ mdb_txn_renew0(MDB_txn *txn)
|
|||
txn->mt_u.reader = r;
|
||||
meta = env->me_metas[txn->mt_txnid & 1];
|
||||
}
|
||||
txn->mt_dbxs = env->me_dbxs; /* mostly static anyway */
|
||||
} else {
|
||||
/* Not yet touching txn == env->me_txn0, it may be active */
|
||||
if (ti) {
|
||||
|
|
@ -2662,14 +2659,11 @@ mdb_txn_renew0(MDB_txn *txn)
|
|||
meta = env->me_metas[ mdb_env_pick_meta(env) ];
|
||||
txn->mt_txnid = meta->mm_txnid;
|
||||
}
|
||||
/* Setup db info */
|
||||
txn->mt_numdbs = env->me_numdbs;
|
||||
txn->mt_txnid++;
|
||||
#if MDB_DEBUG
|
||||
if (txn->mt_txnid == mdb_debug_start)
|
||||
mdb_debug = 1;
|
||||
#endif
|
||||
txn->mt_flags = 0;
|
||||
txn->mt_child = NULL;
|
||||
txn->mt_loose_pgs = NULL;
|
||||
txn->mt_loose_count = 0;
|
||||
|
|
@ -2689,6 +2683,10 @@ mdb_txn_renew0(MDB_txn *txn)
|
|||
/* Moved to here to avoid a data race in read TXNs */
|
||||
txn->mt_next_pgno = meta->mm_last_pg+1;
|
||||
|
||||
txn->mt_flags = flags;
|
||||
|
||||
/* Setup db info */
|
||||
txn->mt_numdbs = env->me_numdbs;
|
||||
for (i=2; i<txn->mt_numdbs; i++) {
|
||||
x = env->me_dbflags[i];
|
||||
txn->mt_dbs[i].md_flags = x & PERSISTENT_FLAGS;
|
||||
|
|
|
|||
Loading…
Reference in a new issue