mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-27 18:19:52 -05:00
Don't use non-existent node info in branch/leaf2
This commit is contained in:
parent
86f8b203f5
commit
937b5eff07
1 changed files with 6 additions and 2 deletions
|
|
@ -2105,6 +2105,7 @@ done:
|
|||
if (m2->mc_pg[mc->mc_top] == mp) {
|
||||
m2->mc_pg[mc->mc_top] = np;
|
||||
if ((mc->mc_db->md_flags & MDB_DUPSORT) &&
|
||||
IS_LEAF(np) &&
|
||||
m2->mc_ki[mc->mc_top] == mc->mc_ki[mc->mc_top])
|
||||
{
|
||||
MDB_node *leaf = NODEPTR(np, mc->mc_ki[mc->mc_top]);
|
||||
|
|
@ -6305,9 +6306,11 @@ mdb_cursor_del(MDB_cursor *mc, unsigned int flags)
|
|||
return rc;
|
||||
|
||||
mp = mc->mc_pg[mc->mc_top];
|
||||
if (IS_LEAF2(mp))
|
||||
goto del_key;
|
||||
leaf = NODEPTR(mp, mc->mc_ki[mc->mc_top]);
|
||||
|
||||
if (!IS_LEAF2(mp) && F_ISSET(leaf->mn_flags, F_DUPDATA)) {
|
||||
if (F_ISSET(leaf->mn_flags, F_DUPDATA)) {
|
||||
if (!(flags & MDB_NODUPDATA)) {
|
||||
if (!F_ISSET(leaf->mn_flags, F_SUBDATA)) {
|
||||
mc->mc_xcursor->mx_cursor.mc_pg[0] = NODEDATA(leaf);
|
||||
|
|
@ -6351,7 +6354,7 @@ mdb_cursor_del(MDB_cursor *mc, unsigned int flags)
|
|||
}
|
||||
|
||||
/* add overflow pages to free list */
|
||||
if (!IS_LEAF2(mp) && F_ISSET(leaf->mn_flags, F_BIGDATA)) {
|
||||
if (F_ISSET(leaf->mn_flags, F_BIGDATA)) {
|
||||
MDB_page *omp;
|
||||
pgno_t pg;
|
||||
|
||||
|
|
@ -6361,6 +6364,7 @@ mdb_cursor_del(MDB_cursor *mc, unsigned int flags)
|
|||
return rc;
|
||||
}
|
||||
|
||||
del_key:
|
||||
return mdb_cursor_del0(mc);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue