]> git.sur5r.net Git - openldap/commitdiff
Fix stale sub-cursor C_INIT flag
authorHoward Chu <hyc@symas.com>
Sun, 14 Jul 2013 15:20:18 +0000 (08:20 -0700)
committerHoward Chu <hyc@symas.com>
Sun, 14 Jul 2013 15:20:18 +0000 (08:20 -0700)
Whenever we enter cursor_set() the sub-cursor's flag must be
cleared. If the new cursor position has valid subdata it will
be initialized again, if not then the sub-cursor has nothing
to point to.

libraries/liblmdb/mdb.c

index df88adcd27edad2cb19a50900929bb40fa3a532b..3f8dc732bbed37e300e7065f0e65a7ef3ca3dd79 100644 (file)
@@ -4856,6 +4856,9 @@ mdb_cursor_set(MDB_cursor *mc, MDB_val *key, MDB_val *data,
        assert(key);
        assert(key->mv_size > 0);
 
+       if (mc->mc_db->md_flags & MDB_DUPSORT)
+               mc->mc_xcursor->mx_cursor.mc_flags &= ~(C_INITIALIZED|C_EOF);
+
        /* See if we're already on the right page */
        if (mc->mc_flags & C_INITIALIZED) {
                MDB_val nodekey;