diff options
Diffstat (limited to 'cpukit/score/src/rbtreeextract.c')
-rw-r--r-- | cpukit/score/src/rbtreeextract.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/cpukit/score/src/rbtreeextract.c b/cpukit/score/src/rbtreeextract.c index 8a87b2d56c..e4eb8d88de 100644 --- a/cpukit/score/src/rbtreeextract.c +++ b/cpukit/score/src/rbtreeextract.c @@ -16,12 +16,28 @@ RB_GENERATE_REMOVE_COLOR( RBTree_Control, RBTree_Node, Node, static ) RB_GENERATE_REMOVE( RBTree_Control, RBTree_Node, Node, static ) +#if defined(RTEMS_DEBUG) +static RBTree_Node *_RBTree_Find_root( const RBTree_Node *the_node ) +{ + while ( true ) { + const RBTree_Node *potential_root; + + potential_root = the_node; + the_node = _RBTree_Parent( the_node ); + + if ( the_node == NULL ) { + return potential_root; + } + } +} +#endif + void _RBTree_Extract( RBTree_Control *the_rbtree, RBTree_Node *the_node ) { - _Assert( the_node->tree == the_rbtree ); + _Assert( _RBTree_Find_root( the_node ) == _RBTree_Root( the_rbtree ) ); RB_REMOVE( RBTree_Control, the_rbtree, the_node ); _RBTree_Initialize_node( the_node ); } |