projects
/
platform
/
upstream
/
lmdb.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
ce6335b
)
Support mdb_txn_abort(a reset txn).
author
Hallvard Furuseth
<hallvard@openldap.org>
Thu, 18 Apr 2013 02:15:45 +0000
(
04:15
+0200)
committer
Hallvard Furuseth
<hallvard@openldap.org>
Thu, 18 Apr 2013 02:15:45 +0000
(
04:15
+0200)
libraries/liblmdb/mdb.c
patch
|
blob
|
history
diff --git
a/libraries/liblmdb/mdb.c
b/libraries/liblmdb/mdb.c
index
f1ed1f2
..
72ffa7e
100644
(file)
--- a/
libraries/liblmdb/mdb.c
+++ b/
libraries/liblmdb/mdb.c
@@
-1980,6
+1980,7
@@
mdb_txn_begin(MDB_env *env, MDB_txn *parent, unsigned int flags, MDB_txn **ret)
}
/** Common code for #mdb_txn_reset() and #mdb_txn_abort().
+ * May be called twice for readonly txns: First reset it, then abort.
* @param[in] txn the transaction handle to reset
*/
static void
@@
-2001,7
+2002,9
@@
mdb_txn_reset0(MDB_txn *txn)
if (F_ISSET(txn->mt_flags, MDB_TXN_RDONLY)) {
if (txn->mt_u.reader) {
txn->mt_u.reader->mr_txnid = (txnid_t)-1;
+ txn->mt_u.reader = NULL; /* do not touch mr_txnid again */
}
+ txn->mt_numdbs = 0; /* mark txn as reset, do not close DBs again */
} else {
MDB_page *dp;