summaryrefslogtreecommitdiffstats
path: root/cpukit/posix/src/testcancel.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/posix/src/testcancel.c')
-rw-r--r--cpukit/posix/src/testcancel.c8
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 );
}