diff options
Diffstat (limited to 'cpukit/posix/src/testcancel.c')
-rw-r--r-- | cpukit/posix/src/testcancel.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/cpukit/posix/src/testcancel.c b/cpukit/posix/src/testcancel.c index f999fe54a9..876f62c768 100644 --- a/cpukit/posix/src/testcancel.c +++ b/cpukit/posix/src/testcancel.c @@ -37,6 +37,7 @@ void pthread_testcancel( void ) { POSIX_API_Control *thread_support; + Thread_Control *executing; bool cancel = false; /* @@ -48,14 +49,15 @@ void pthread_testcancel( void ) if ( _ISR_Is_in_progress() ) return; - thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; - _Thread_Disable_dispatch(); + executing = _Thread_Executing; + thread_support = executing->API_Extensions[ THREAD_API_POSIX ]; + if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE && thread_support->cancelation_requested ) cancel = true; _Thread_Enable_dispatch(); if ( cancel ) - _POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED ); + _POSIX_Thread_Exit( executing, PTHREAD_CANCELED ); } |