]> git.sur5r.net Git - openldap/commitdiff
ITS#7210 fix check for freelist changes
authorHoward Chu <hyc@symas.com>
Tue, 10 Apr 2012 02:24:47 +0000 (19:24 -0700)
committerQuanah Gibson-Mount <quanah@openldap.org>
Wed, 11 Apr 2012 18:40:02 +0000 (11:40 -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 46fd2683d7658e01f80a3aac1d533f1609dbad77..eddeb5e8993c0f46c39bf66d6ac17d5c5ddbaad5 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);