]> git.sur5r.net Git - openldap/commitdiff
mdb_cursor_sibling(): Fix error result
authorHallvard Furuseth <hallvard@openldap.org>
Thu, 3 Oct 2013 21:59:25 +0000 (23:59 +0200)
committerHallvard Furuseth <hallvard@openldap.org>
Thu, 3 Oct 2013 21:59:25 +0000 (23:59 +0200)
libraries/liblmdb/mdb.c

index f3e3180e00d8c793169646712d97ec57fe5dd912..e7564be8a0f662106d04d50e57040ec468ebbec0 100644 (file)
@@ -4942,8 +4942,11 @@ mdb_cursor_sibling(MDB_cursor *mc, int move_right)
        assert(IS_BRANCH(mc->mc_pg[mc->mc_top]));
 
        indx = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]);
-       if ((rc = mdb_page_get(mc->mc_txn, NODEPGNO(indx), &mp, NULL) != 0))
+       if ((rc = mdb_page_get(mc->mc_txn, NODEPGNO(indx), &mp, NULL)) != 0) {
+               /* mc will be inconsistent if caller does mc_snum++ as above */
+               mc->mc_flags &= ~(C_INITIALIZED|C_EOF);
                return rc;
+       }
 
        mdb_cursor_push(mc, mp);
        if (!move_right)