Make sure mdb_stat() gets valid data
authorHoward Chu <hyc@symas.com>
Sat, 8 Jun 2013 21:10:08 +0000 (14:10 -0700)
committerHoward Chu <hyc@symas.com>
Sat, 8 Jun 2013 21:10:08 +0000 (14:10 -0700)
libraries/liblmdb/mdb.c

index 9e01fb5..a90d7d5 100644 (file)
@@ -7325,6 +7325,12 @@ int mdb_stat(MDB_txn *txn, MDB_dbi dbi, MDB_stat *arg)
        if (txn == NULL || arg == NULL || dbi >= txn->mt_numdbs)
                return EINVAL;
 
+       if (txn->mt_dbflags[dbi] & DB_STALE) {
+               MDB_cursor mc;
+               MDB_xcursor mx;
+               /* Stale, must read the DB's root. cursor_init does it for us. */
+               mdb_cursor_init(&mc, txn, dbi, &mx);
+       }
        return mdb_stat0(txn->mt_env, &txn->mt_dbs[dbi], arg);
 }