From: Hallvard Furuseth Date: Wed, 10 Jul 2013 20:11:44 +0000 (+0200) Subject: Do not follow uninited cursors' page pointers. X-Git-Tag: OPENLDAP_REL_ENG_2_4_36~32^2~22 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=3d46d5502aa4065b9a08ddb3711aa4dfd14ddca2;p=openldap Do not follow uninited cursors' page pointers. Nor uninited cursors' subcursors' page pointers. --- diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index 620e5b51ff..0ba5e2dbd0 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -5328,6 +5328,7 @@ put_sub: for (m2 = mc->mc_txn->mt_cursors[mc->mc_dbi]; m2; m2=m2->mc_next) { if (m2 == mc || m2->mc_snum < mc->mc_snum) continue; + if (!(m2->mc_flags & C_INITIALIZED)) continue; if (m2->mc_pg[i] == mp && m2->mc_ki[i] == mc->mc_ki[i]) { mdb_xcursor_init1(m2, leaf); } @@ -7025,7 +7026,7 @@ done: m3 = m2; if (m3 == mc) continue; - if (!(m3->mc_flags & C_INITIALIZED)) + if (!(m2->mc_flags & m3->mc_flags & C_INITIALIZED)) continue; if (m3->mc_flags & C_SPLITTING) continue;