Must do dlist_free before releasing Wmutex
authorHoward Chu <hyc@symas.com>
Sun, 20 Jul 2014 15:10:34 +0000 (08:10 -0700)
committerHoward Chu <hyc@symas.com>
Wed, 1 Oct 2014 19:36:37 +0000 (20:36 +0100)
libraries/liblmdb/mdb.c

index cc15a1bfd1113342369924a953107205f979253f..6179b57868d255661d8e1fa2c5bb3a0b0862669a 100644 (file)
@@ -2801,6 +2801,10 @@ mdb_txn_reset0(MDB_txn *txn, const char *act)
                env->me_pghead = NULL;
                env->me_pglast = 0;
 
+               if (!(env->me_flags & MDB_WRITEMAP)) {
+                       mdb_dlist_free(txn);
+               }
+
                if (!txn->mt_parent) {
                        if (mdb_midl_shrink(&txn->mt_free_pgs))
                                env->me_free_pgs = txn->mt_free_pgs;
@@ -2813,9 +2817,6 @@ mdb_txn_reset0(MDB_txn *txn, const char *act)
 
                mdb_cursors_close(txn, 0);
 
-               if (!(env->me_flags & MDB_WRITEMAP)) {
-                       mdb_dlist_free(txn);
-               }
                mdb_midl_free(pghead);
 
                if (txn->mt_parent) {