mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-02-05 13:40:08 +08:00
avl_delete...
This commit is contained in:
parent
4c89b0e80c
commit
8c3e9ddb1c
@ -230,14 +230,13 @@ avl_delete( Avlnode **root, void* data, AVL_CMP fcmp )
|
||||
/* fix stack positions: old parent of p points to q */
|
||||
pptr[side] = q;
|
||||
if ( side ) {
|
||||
--side;
|
||||
r = pptr[side];
|
||||
r->avl_link[pdir[side]] = q;
|
||||
r = pptr[side-1];
|
||||
r->avl_link[pdir[side-1]] = q;
|
||||
} else {
|
||||
*root = q;
|
||||
}
|
||||
/* new parent of p points to p */
|
||||
if ( depth > 1 ) {
|
||||
if ( depth-side > 1 ) {
|
||||
r = pptr[depth-1];
|
||||
r->avl_link[1] = p;
|
||||
} else {
|
||||
@ -246,7 +245,7 @@ avl_delete( Avlnode **root, void* data, AVL_CMP fcmp )
|
||||
}
|
||||
|
||||
/* now <p> has at most one child, get it */
|
||||
q = p->avl_link[0];
|
||||
q = p->avl_link[0] ? p->avl_link[0] : p->avl_link[1];
|
||||
|
||||
ber_memfree( p );
|
||||
|
||||
|
@ -244,14 +244,13 @@ tavl_delete( Avlnode **root, void* data, AVL_CMP fcmp )
|
||||
/* fix stack positions: old parent of p points to q */
|
||||
pptr[side] = q;
|
||||
if ( side ) {
|
||||
--side;
|
||||
r = pptr[side];
|
||||
r->avl_link[pdir[side]] = q;
|
||||
r = pptr[side-1];
|
||||
r->avl_link[pdir[side-1]] = q;
|
||||
} else {
|
||||
*root = q;
|
||||
}
|
||||
/* new parent of p points to p */
|
||||
if ( depth > 1 ) {
|
||||
if ( depth-side > 1 ) {
|
||||
r = pptr[depth-1];
|
||||
r->avl_link[1] = p;
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user