]> git.sur5r.net Git - openldap/commitdiff
ITS#7722 fix page_merge for collapsing root
authorHoward Chu <hyc@symas.com>
Wed, 9 Oct 2013 09:24:45 +0000 (02:24 -0700)
committerHoward Chu <hyc@symas.com>
Wed, 9 Oct 2013 09:24:45 +0000 (02:24 -0700)
Other cursors being fixed up are not necessarily height 1.

libraries/liblmdb/mdb.c

index e935dc633aa8d0917855ef94935c7c9d1f78e8db..f282f185d4c557b8cb8237ee7f9c8072f30945d5 100644 (file)
@@ -7161,10 +7161,13 @@ mdb_rebalance(MDB_cursor *mc)
                                                m3 = m2;
                                        if (m3 == mc || m3->mc_snum < mc->mc_snum) continue;
                                        if (m3->mc_pg[0] == mp) {
-                                               m3->mc_pg[0] = mc->mc_pg[0];
-                                               m3->mc_snum = 1;
-                                               m3->mc_top = 0;
-                                               m3->mc_ki[0] = m3->mc_ki[1];
+                                               int i;
+                                               m3->mc_snum--;
+                                               m3->mc_top--;
+                                               for (i=0; i<m3->mc_snum; i++) {
+                                                       m3->mc_pg[i] = m3->mc_pg[i+1];
+                                                       m3->mc_ki[i] = m3->mc_ki[i+1];
+                                               }
                                        }
                                }
                        }