From: Hallvard Furuseth Date: Fri, 5 Dec 2014 17:18:53 +0000 (+0100) Subject: Fix SysV semaphores - repair mti_txnid. X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=1413de3a0474e316d2128ed420a1ebfe0d2b64d8;p=openldap Fix SysV semaphores - repair mti_txnid. Similar to 443a7e40c4280cfd07cbf80c5de62ea072b136e3. --- diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index 7a71e18a0d..a4f13e60f6 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -2573,9 +2573,17 @@ mdb_txn_renew0(MDB_txn *txn) if (ti) { if (LOCK_MUTEX(rc, env, MDB_MUTEX(env, w))) return rc; - +#ifdef MDB_USE_SYSV_SEM + meta = env->me_metas[ mdb_env_pick_meta(env) ]; + txn->mt_txnid = meta->mm_txnid; + /* Update mti_txnid like mdb_mutex_failed() would, + * in case last writer crashed before updating it. + */ + ti->mti_txnid = txn->mt_txnid; +#else txn->mt_txnid = ti->mti_txnid; meta = env->me_metas[txn->mt_txnid & 1]; +#endif } else { meta = env->me_metas[ mdb_env_pick_meta(env) ]; txn->mt_txnid = meta->mm_txnid;