@@ -5668,8 +5668,10 @@ mdb_cursor_next(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
5668
5668
5669
5669
DPRINTF (("cursor_next: top page is %" Z "u in cursor %p" ,
5670
5670
mdb_dbg_pgno (mp ), (void * ) mc ));
5671
- if (mc -> mc_flags & C_DEL )
5671
+ if (mc -> mc_flags & C_DEL ) {
5672
+ mc -> mc_flags ^= C_DEL ;
5672
5673
goto skip ;
5674
+ }
5673
5675
5674
5676
if (mc -> mc_ki [mc -> mc_top ] + 1u >= NUMKEYS (mp )) {
5675
5677
DPUTS ("=====> move to next sibling page" );
@@ -5748,6 +5750,8 @@ mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
5748
5750
DPRINTF (("cursor_prev: top page is %" Z "u in cursor %p" ,
5749
5751
mdb_dbg_pgno (mp ), (void * ) mc ));
5750
5752
5753
+ mc -> mc_flags &= ~(C_EOF |C_DEL );
5754
+
5751
5755
if (mc -> mc_ki [mc -> mc_top ] == 0 ) {
5752
5756
DPUTS ("=====> move to prev sibling page" );
5753
5757
if ((rc = mdb_cursor_sibling (mc , 0 )) != MDB_SUCCESS ) {
@@ -5759,8 +5763,6 @@ mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
5759
5763
} else
5760
5764
mc -> mc_ki [mc -> mc_top ]-- ;
5761
5765
5762
- mc -> mc_flags &= ~C_EOF ;
5763
-
5764
5766
DPRINTF (("==> cursor points to page %" Z "u with %u keys, key index %u" ,
5765
5767
mdb_dbg_pgno (mp ), NUMKEYS (mp ), mc -> mc_ki [mc -> mc_top ]));
5766
5768
0 commit comments