@@ -7596,47 +7596,39 @@ mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst)
7596
7596
/* Adjust other cursors pointing to mp */
7597
7597
MDB_cursor * m2 , * m3 ;
7598
7598
MDB_dbi dbi = csrc -> mc_dbi ;
7599
- MDB_page * mp ;
7599
+ MDB_page * mpd , * mps ;
7600
7600
7601
+ mps = csrc -> mc_pg [csrc -> mc_top ];
7601
7602
/* If we're adding on the left, bump others up */
7602
7603
if (!cdst -> mc_ki [csrc -> mc_top ]) {
7603
- mp = cdst -> mc_pg [csrc -> mc_top ];
7604
+ mpd = cdst -> mc_pg [csrc -> mc_top ];
7604
7605
for (m2 = csrc -> mc_txn -> mt_cursors [dbi ]; m2 ; m2 = m2 -> mc_next ) {
7605
7606
if (csrc -> mc_flags & C_SUB )
7606
7607
m3 = & m2 -> mc_xcursor -> mx_cursor ;
7607
7608
else
7608
7609
m3 = m2 ;
7609
- if (m3 == cdst ) continue ;
7610
- if ( m3 -> mc_pg [csrc -> mc_top ] == mp && m3 -> mc_ki [ csrc -> mc_top ] >=
7611
- cdst -> mc_ki [csrc -> mc_top ]) {
7610
+ if (m3 != cdst &&
7611
+ m3 -> mc_pg [csrc -> mc_top ] == mpd &&
7612
+ m3 -> mc_ki [ csrc -> mc_top ] >= cdst -> mc_ki [csrc -> mc_top ]) {
7612
7613
m3 -> mc_ki [csrc -> mc_top ]++ ;
7613
7614
}
7614
- }
7615
-
7616
- mp = csrc -> mc_pg [csrc -> mc_top ];
7617
- for (m2 = csrc -> mc_txn -> mt_cursors [dbi ]; m2 ; m2 = m2 -> mc_next ) {
7618
- if (csrc -> mc_flags & C_SUB )
7619
- m3 = & m2 -> mc_xcursor -> mx_cursor ;
7620
- else
7621
- m3 = m2 ;
7622
- if (m3 == csrc ) continue ;
7623
- if (m3 -> mc_pg [csrc -> mc_top ] == mp && m3 -> mc_ki [csrc -> mc_top ] ==
7624
- csrc -> mc_ki [csrc -> mc_top ]) {
7615
+ if (m3 != csrc &&
7616
+ m3 -> mc_pg [csrc -> mc_top ] == mps &&
7617
+ m3 -> mc_ki [csrc -> mc_top ] == csrc -> mc_ki [csrc -> mc_top ]) {
7625
7618
m3 -> mc_pg [csrc -> mc_top ] = cdst -> mc_pg [cdst -> mc_top ];
7626
7619
m3 -> mc_ki [csrc -> mc_top ] = cdst -> mc_ki [cdst -> mc_top ];
7627
7620
}
7628
7621
}
7629
7622
} else
7630
7623
/* Adding on the right, bump others down */
7631
7624
{
7632
- mp = csrc -> mc_pg [csrc -> mc_top ];
7633
7625
for (m2 = csrc -> mc_txn -> mt_cursors [dbi ]; m2 ; m2 = m2 -> mc_next ) {
7634
7626
if (csrc -> mc_flags & C_SUB )
7635
7627
m3 = & m2 -> mc_xcursor -> mx_cursor ;
7636
7628
else
7637
7629
m3 = m2 ;
7638
7630
if (m3 == csrc ) continue ;
7639
- if (m3 -> mc_pg [csrc -> mc_top ] == mp ) {
7631
+ if (m3 -> mc_pg [csrc -> mc_top ] == mps ) {
7640
7632
if (!m3 -> mc_ki [csrc -> mc_top ]) {
7641
7633
m3 -> mc_pg [csrc -> mc_top ] = cdst -> mc_pg [cdst -> mc_top ];
7642
7634
m3 -> mc_ki [csrc -> mc_top ] = cdst -> mc_ki [cdst -> mc_top ];
0 commit comments