From: Howard Chu Date: Sun, 26 Aug 2012 18:05:45 +0000 (-0700) Subject: Fix mdb_audit() X-Git-Tag: OPENLDAP_REL_ENG_2_4_33~28^2~1 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=85ae5011e722ef5b7cc74de9d686c88f8c5268a9;p=openldap Fix mdb_audit() due to a0993354a603a970889ad5c160c289ecca316f81 --- diff --git a/libraries/libmdb/mdb.c b/libraries/libmdb/mdb.c index f8211c6019..67ffff35cf 100644 --- a/libraries/libmdb/mdb.c +++ b/libraries/libmdb/mdb.c @@ -1107,17 +1107,18 @@ static void mdb_audit(MDB_txn *txn) mdb_cursor_init(&mc, txn, FREE_DBI, NULL); while ((rc = mdb_cursor_get(&mc, &key, &data, MDB_NEXT)) == 0) freecount += *(MDB_ID *)data.mv_data; - freecount += txn->mt_dbs[0].md_branch_pages + txn->mt_dbs[0].md_leaf_pages + - txn->mt_dbs[0].md_overflow_pages; count = 0; for (i = 0; imt_numdbs; i++) { + MDB_xcursor mx, *mxp; + mxp = (txn->mt_dbs[i].md_flags & MDB_DUPSORT) ? &mx : NULL; + mdb_cursor_init(&mc, txn, i, mxp); + if (txn->mt_dbs[i].md_root == P_INVALID) + continue; count += txn->mt_dbs[i].md_branch_pages + txn->mt_dbs[i].md_leaf_pages + txn->mt_dbs[i].md_overflow_pages; if (txn->mt_dbs[i].md_flags & MDB_DUPSORT) { - MDB_xcursor mx; - mdb_cursor_init(&mc, txn, i, &mx); mdb_page_search(&mc, NULL, 0); do { unsigned j; @@ -1136,7 +1137,7 @@ static void mdb_audit(MDB_txn *txn) while (mdb_cursor_sibling(&mc, 1) == 0); } } - assert(freecount + count + 2 >= txn->mt_next_pgno - 1); + assert(freecount + count + 2 /* metapages */ == txn->mt_next_pgno); } #endif