]> git.sur5r.net Git - openldap/commitdiff
ITS#8300 more for node_move
authorHoward Chu <hyc@openldap.org>
Fri, 6 Nov 2015 10:12:45 +0000 (10:12 +0000)
committerHoward Chu <hyc@openldap.org>
Fri, 6 Nov 2015 10:12:45 +0000 (10:12 +0000)
When moving a node from one page to another, make sure other cursors'
parent index gets adjusted too.

libraries/liblmdb/mdb.c

index a4d1f6146f7ffd6d8bdafdbe92d743d42268d423..59222cadeaf38024ce812c07987b34a5c792cd9c 100644 (file)
@@ -7738,6 +7738,7 @@ mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst)
                                        m3->mc_ki[csrc->mc_top] == csrc->mc_ki[csrc->mc_top]) {
                                        m3->mc_pg[csrc->mc_top] = cdst->mc_pg[cdst->mc_top];
                                        m3->mc_ki[csrc->mc_top] = cdst->mc_ki[cdst->mc_top];
+                                       m3->mc_ki[csrc->mc_top-1]++;
                                }
                        }
                } else
@@ -7753,6 +7754,7 @@ mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst)
                                        if (!m3->mc_ki[csrc->mc_top]) {
                                                m3->mc_pg[csrc->mc_top] = cdst->mc_pg[cdst->mc_top];
                                                m3->mc_ki[csrc->mc_top] = cdst->mc_ki[cdst->mc_top];
+                                               m3->mc_ki[csrc->mc_top-1]--;
                                        } else {
                                                m3->mc_ki[csrc->mc_top]--;
                                        }