diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c
index d4edda47bc189c6498a473b348741564dd1398c7..82c23dd0a5764c1e7f60134a9432814288eb6a6d 100644
--- a/libraries/liblmdb/mdb.c
+++ b/libraries/liblmdb/mdb.c
@@ -2778,11 +2778,8 @@ mdb_txn_reset0(MDB_txn *txn, const char *act)
 		txn->mt_dbxs = NULL;	/* mark txn as reset */
 	} else {
 		pgno_t *pghead = env->me_pghead;
-		env->me_pghead = NULL;
-		env->me_pglast = 0;
 
 		mdb_cursors_close(txn, 0);
-
 		if (!(env->me_flags & MDB_WRITEMAP)) {
 			mdb_dlist_free(txn);
 		}
@@ -2790,6 +2787,9 @@ mdb_txn_reset0(MDB_txn *txn, const char *act)
 		if (!txn->mt_parent) {
 			if (mdb_midl_shrink(&txn->mt_free_pgs))
 				env->me_free_pgs = txn->mt_free_pgs;
+			/* me_pgstate: */
+			env->me_pghead = NULL;
+			env->me_pglast = 0;
 
 			env->me_txn = NULL;
 			/* The writer mutex was locked in mdb_txn_begin. */