From e0942613f134ac28c5c6cdae99060989b6db1d08 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 13 Jul 2022 15:14:47 +0200 Subject: score: Fix _Objects_Active_count() With unlimited objects the object maximum may be larger than the sum of active and inactive objects. Update #4677. --- cpukit/score/src/objectactivecount.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'cpukit/score/src') diff --git a/cpukit/score/src/objectactivecount.c b/cpukit/score/src/objectactivecount.c index 028058e473..5f0304fead 100644 --- a/cpukit/score/src/objectactivecount.c +++ b/cpukit/score/src/objectactivecount.c @@ -46,14 +46,22 @@ Objects_Maximum _Objects_Active_count( const Objects_Information *information ) { - Objects_Maximum inactive; - Objects_Maximum maximum; + Objects_Maximum active; + Objects_Maximum index; + Objects_Maximum maximum; + Objects_Control **local_table; _Assert( _Objects_Allocator_is_owner() ); - inactive = (Objects_Maximum) - _Chain_Node_count_unprotected( &information->Inactive ); + active = 0; maximum = _Objects_Get_maximum_index( information ); + local_table = information->local_table; - return maximum - inactive; + for ( index = 0; index < maximum; ++index ) { + if ( local_table[ index ] != NULL ) { + ++active; + } + } + + return active; } -- cgit v1.2.3