ITS#7815 fix mdb_page_split

Was leaving cursor pointed at wrong page if the newindx was
in the right sibling page, and the parent was also split.
incre
Howard Chu 11 years ago
parent e2bdd44624
commit 0e7fba73b7
  1. 4
      libraries/liblmdb/mdb.c

@ -7857,12 +7857,10 @@ mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno
*/ */
if (mn.mc_pg[ptop] != mc->mc_pg[ptop] && if (mn.mc_pg[ptop] != mc->mc_pg[ptop] &&
mc->mc_ki[ptop] >= NUMKEYS(mc->mc_pg[ptop])) { mc->mc_ki[ptop] >= NUMKEYS(mc->mc_pg[ptop])) {
for (i=0; i<ptop; i++) { for (i=0; i<=ptop; i++) {
mc->mc_pg[i] = mn.mc_pg[i]; mc->mc_pg[i] = mn.mc_pg[i];
mc->mc_ki[i] = mn.mc_ki[i]; mc->mc_ki[i] = mn.mc_ki[i];
} }
mc->mc_pg[ptop] = mn.mc_pg[ptop];
mc->mc_ki[ptop] = mn.mc_ki[ptop] - 1;
} }
} }
/* return tmp page to freelist */ /* return tmp page to freelist */

Loading…
Cancel
Save