ITS#7210 fix check for freelist changes
authorHoward Chu <hyc@symas.com>
Tue, 10 Apr 2012 02:24:47 +0000 (19:24 -0700)
committerHoward Chu <hyc@symas.com>
Tue, 10 Apr 2012 02:24:47 +0000 (19:24 -0700)
Was being fooled before because the newly malloc'd block had
the same address as the previously freed block.

libraries/libmdb/mdb.c

index 46fd268..eddeb5e 100644 (file)
@@ -1989,7 +1989,7 @@ again:
                 * due to freed overflow pages...
                 */
                mdb_cursor_put(&mc, &key, &data, 0);
-               if (mop == env->me_pghead) {
+               if (mop == env->me_pghead && env->me_pghead->mo_txnid == id) {
                        /* could have been used again here */
                        if (mop->mo_pages[0] != orig) {
                                data.mv_size = MDB_IDL_SIZEOF(mop->mo_pages);