summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2020-08-26 20:29:11 +0200
committerJohnny Willemsen <jwillemsen@remedy.nl>2020-08-26 20:29:11 +0200
commit0c2d1a119120df3e6f615c82cbb23d39e9763dfa (patch)
tree2c67e804a8423fa6c37d4b821f82a88ec9295dc0
parentffdd6735537f4c5a69fdf75a658d12d55108d7cd (diff)
parente4e843a66e9388138dfcb64328637221d264b6a0 (diff)
downloadATCD-0c2d1a119120df3e6f615c82cbb23d39e9763dfa.tar.gz
Merge branch 'thr-mgr-join-leak-deadlock' of git://github.com/likema/ACE_TAO into likema-thr-mgr-join-leak-deadlock
-rw-r--r--ACE/ace/Thread_Manager.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/ACE/ace/Thread_Manager.cpp b/ACE/ace/Thread_Manager.cpp
index 172e4a43af8..0d6de7694ca 100644
--- a/ACE/ace/Thread_Manager.cpp
+++ b/ACE/ace/Thread_Manager.cpp
@@ -1496,14 +1496,18 @@ ACE_Thread_Manager::join (ACE_thread_t tid, ACE_THR_FUNC_RETURN *status)
{
if (ACE_OS::thr_equal (biter.next ()->thr_id_, tid))
{
- ACE_Thread_Descriptor_Base *tdbl = biter.advance_and_remove (false);
+#if defined (ACE_HAS_CPP11)
+ std::unique_ptr<ACE_Thread_Descriptor_Base> tdbl (biter.advance_and_remove (false));
+#else
+ auto_ptr<ACE_Thread_Descriptor_Base> tdbl (biter.advance_and_remove (false));
+#endif /* ACE_HAS_CPP11 */
+ ace_mon.release();
#ifndef ACE_LACKS_PTHREAD_JOIN
if (ACE_Thread::join (tdbl->thr_handle_, status) == -1)
{
return -1;
}
#endif
- delete tdbl;
// return immediately if we've found the thread we want to join.
return 0;