diff options
Diffstat (limited to 'ace/Thread_Manager.cpp')
-rw-r--r-- | ace/Thread_Manager.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/ace/Thread_Manager.cpp b/ace/Thread_Manager.cpp index ef1370dfb92..ae27fd049c6 100644 --- a/ace/Thread_Manager.cpp +++ b/ace/Thread_Manager.cpp @@ -1011,19 +1011,22 @@ ACE_Thread_Control::ACE_Thread_Control (ACE_Thread_Manager *t, ACE_Thread_Control::~ACE_Thread_Control (void) { ACE_TRACE ("ACE_Thread_Control::~ACE_Thread_Control"); -#if !defined (ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS) - this->exit (this->status_); +#if defined (ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS) + this->exit (this->status_, 0); +#else + this->exit (this->status_, 1); #endif /* ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS */ } // Exit from thread (but clean up first). void * -ACE_Thread_Control::exit (void *exit_status) +ACE_Thread_Control::exit (void *exit_status, int do_thr_exit) { ACE_TRACE ("ACE_Thread_Control::exit"); + if (this->tm_ != 0) - return this->tm_->exit (exit_status); + return this->tm_->exit (exit_status, do_thr_exit); else { ACE_Thread::exit (exit_status); |