Merge pull request #1656

edfd7f6e Workaround VL32 cursor refcounting miscount (Howard Chu)
This commit is contained in:
Riccardo Spagni 2017-02-02 21:39:03 +02:00
commit da9174c8ee
No known key found for this signature in database
GPG Key ID: 55432DF31CCD4FCD
1 changed files with 9 additions and 7 deletions

View File

@ -1953,13 +1953,15 @@ static void
mdb_cursor_unref(MDB_cursor *mc)
{
int i;
if (!mc->mc_snum || !mc->mc_pg[0] || IS_SUBP(mc->mc_pg[0]))
return;
for (i=0; i<mc->mc_snum; i++)
mdb_page_unref(mc->mc_txn, mc->mc_pg[i]);
if (mc->mc_ovpg) {
mdb_page_unref(mc->mc_txn, mc->mc_ovpg);
mc->mc_ovpg = 0;
if (mc->mc_txn->mt_rpages[0].mid) {
if (!mc->mc_snum || !mc->mc_pg[0] || IS_SUBP(mc->mc_pg[0]))
return;
for (i=0; i<mc->mc_snum; i++)
mdb_page_unref(mc->mc_txn, mc->mc_pg[i]);
if (mc->mc_ovpg) {
mdb_page_unref(mc->mc_txn, mc->mc_ovpg);
mc->mc_ovpg = 0;
}
}
mc->mc_snum = mc->mc_top = 0;
mc->mc_pg[0] = NULL;