mdb_txn_commit(): Always commit if MDB_TXN_SPILLS.
authorHallvard Furuseth <hallvard@openldap.org>
Sat, 10 Aug 2013 10:29:45 +0000 (12:29 +0200)
committerHallvard Furuseth <hallvard@openldap.org>
Sat, 10 Aug 2013 10:29:45 +0000 (12:29 +0200)
Checking dirty_list was insufficient after a spill
with no named databases and no positioned cursors.

libraries/liblmdb/mdb.c

index a407edac7a0f0eb76b674281d7e99d637ed8c294..02c7f067e37ae1dc312a5a3ebd0c3fae5acedc9a 100644 (file)
@@ -2851,7 +2851,8 @@ mdb_txn_commit(MDB_txn *txn)
 
        mdb_cursors_close(txn, 0);
 
-       if (!txn->mt_u.dirty_list[0].mid && !(txn->mt_flags & MDB_TXN_DIRTY))
+       if (!txn->mt_u.dirty_list[0].mid &&
+               !(txn->mt_flags & (MDB_TXN_DIRTY|MDB_TXN_SPILLS)))
                goto done;
 
        DPRINTF("committing txn %"Z"u %p on mdbenv %p, root page %"Z"u",