]> git.sur5r.net Git - openldap/blobdiff - libraries/liblmdb/mdb.c
Cleaner "Support mdb_txn_abort(a reset txn)".
[openldap] / libraries / liblmdb / mdb.c
index 96ca73fb03f9c9688d43f26ab45d3144c4f8efc2..14b13822e97aa22bc89f03b0955c7820f288518d 100644 (file)
@@ -1871,7 +1871,7 @@ mdb_txn_renew(MDB_txn *txn)
 {
        int rc;
 
-       if (!txn || txn->mt_numdbs || !(txn->mt_flags & MDB_TXN_RDONLY))
+       if (!txn || txn->mt_dbxs)       /* A reset txn has mt_dbxs==NULL */
                return EINVAL;
 
        if (txn->mt_env->me_flags & MDB_FATAL_ERROR) {
@@ -2014,7 +2014,8 @@ mdb_txn_reset0(MDB_txn *txn)
                        if (!(env->me_flags & MDB_NOTLS))
                                txn->mt_u.reader = NULL; /* txn does not own reader */
                }
-               txn->mt_numdbs = 0;     /* mark txn as reset, do not close DBs again */
+               txn->mt_numdbs = 0;             /* close nothing if called again */
+               txn->mt_dbxs = NULL;    /* mark txn as reset */
        } else {
                MDB_page *dp;