@ -1,4 +1,4 @@
/* $OpenBSD: tsearch.c,v 1.6 2006/04/04 11:21:50 moritz Exp $ */
/* $OpenBSD: tsearch.c,v 1.7 2012/02/06 20:29:54 guenther Exp $ */
/*
/*
* Tree search generalized from Knuth ( 6.2 .2 ) Algorithm T just like
* Tree search generalized from Knuth ( 6.2 .2 ) Algorithm T just like
@ -56,12 +56,12 @@ tdelete(const void *vkey, void **vrootp,
{
{
node * * rootp = ( node * * ) vrootp ;
node * * rootp = ( node * * ) vrootp ;
char * key = ( char * ) vkey ;
char * key = ( char * ) vkey ;
node * p ;
node * p = ( node * ) 1 ;
node * q ;
node * q ;
node * r ;
node * r ;
int cmp ;
int cmp ;
if ( rootp = = ( struct node_t * * ) 0 | | ( p = * rootp ) = = ( struct node_t * ) 0 )
if ( rootp = = ( struct node_t * * ) 0 | | * rootp = = ( struct node_t * ) 0 )
return ( ( struct node_t * ) 0 ) ;
return ( ( struct node_t * ) 0 ) ;
while ( ( cmp = ( * compar ) ( key , ( * rootp ) - > key ) ) ! = 0 ) {
while ( ( cmp = ( * compar ) ( key , ( * rootp ) - > key ) ) ! = 0 ) {
p = * rootp ;
p = * rootp ;
@ -86,8 +86,6 @@ tdelete(const void *vkey, void **vrootp,
q - > right = ( * rootp ) - > right ;
q - > right = ( * rootp ) - > right ;
}
}
}
}
if ( p = = * rootp )
p = q ;
free ( ( struct node_t * ) * rootp ) ; /* D4: Free node */
free ( ( struct node_t * ) * rootp ) ; /* D4: Free node */
* rootp = q ; /* link parent to new node */
* rootp = q ; /* link parent to new node */
return ( p ) ;
return ( p ) ;