summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHoward Chu <hyc@openldap.org>2016-11-12 23:11:20 +0000
committerHoward Chu <hyc@openldap.org>2016-11-12 23:11:20 +0000
commite58db7d5568c8ac91c0f1e6c64a58ba6f84b037d (patch)
treea0c7b67d4e2349baa8aa9594e4da2bc7ec56a8df
parentf7e85d7804109a429dd6d24b19cc2148a7f43813 (diff)
downloadlmdb-e58db7d5568c8ac91c0f1e6c64a58ba6f84b037d.tar.gz
lmdb-e58db7d5568c8ac91c0f1e6c64a58ba6f84b037d.tar.bz2
lmdb-e58db7d5568c8ac91c0f1e6c64a58ba6f84b037d.zip
More for ITS#8406
Revert excess cursor fixup
-rw-r--r--libraries/liblmdb/mdb.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c
index 17f5a86..026019e 100644
--- a/libraries/liblmdb/mdb.c
+++ b/libraries/liblmdb/mdb.c
@@ -9198,9 +9198,11 @@ mdb_cursor_del0(MDB_cursor *mc)
}
if (mc->mc_db->md_flags & MDB_DUPSORT) {
MDB_node *node = NODEPTR(m3->mc_pg[m3->mc_top], m3->mc_ki[m3->mc_top]);
- if (node->mn_flags & F_DUPDATA) {
+ /* If this node is a fake page, it needs to be reinited
+ * because its data has moved.
+ */
+ if ((node->mn_flags & (F_DUPDATA|F_SUBDATA)) == F_DUPDATA) {
mdb_xcursor_init1(m3, node);
- m3->mc_xcursor->mx_cursor.mc_flags |= C_DEL;
}
}
}