From: Hallvard Furuseth Date: Fri, 23 Aug 2013 05:39:04 +0000 (+0200) Subject: mdb_page_spill(): Fix nested txn mt_dirty_room X-Git-Tag: OPENLDAP_REL_ENG_2_4_37~39^2~16 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=6616034eb9a4ea5e84d620ec398a8aa0a9e336fb;p=openldap mdb_page_spill(): Fix nested txn mt_dirty_room --- diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index 640419c6e7..c6a7359a04 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -1530,13 +1530,13 @@ mdb_page_spill(MDB_cursor *m0, MDB_val *key, MDB_val *data) done: if (rc == 0) { if (txn->mt_parent) { - MDB_txn *tx2; - pgno_t pgno = dl[i].mid; txn->mt_dirty_room = txn->mt_parent->mt_dirty_room - dl[0].mid; /* dirty pages that are dirty in an ancestor don't * count against this txn's dirty_room. */ for (i=1; i<=dl[0].mid; i++) { + pgno_t pgno = dl[i].mid; + MDB_txn *tx2; for (tx2 = txn->mt_parent; tx2; tx2 = tx2->mt_parent) { j = mdb_mid2l_search(tx2->mt_u.dirty_list, pgno); if (j <= tx2->mt_u.dirty_list[0].mid &&