[Opalvoip-svn] SF.net SVN: opalvoip:[24284] ptlib/trunk
Brought to you by:
csoutheren,
rjongbloed
From: <rjo...@us...> - 2010-04-26 05:55:21
|
Revision: 24284 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=24284&view=rev Author: rjongbloed Date: 2010-04-26 05:55:15 +0000 (Mon, 26 Apr 2010) Log Message: ----------- Fixed bug ID: 2990513 "PExternalThread don't removed from process.activeThreads", reported by ddv. Modified Paths: -------------- ptlib/trunk/include/ptlib/msos/ptlib/thread.h ptlib/trunk/src/ptlib/msos/win32.cxx Modified: ptlib/trunk/include/ptlib/msos/ptlib/thread.h =================================================================== --- ptlib/trunk/include/ptlib/msos/ptlib/thread.h 2010-04-26 05:16:17 UTC (rev 24283) +++ ptlib/trunk/include/ptlib/msos/ptlib/thread.h 2010-04-26 05:55:15 UTC (rev 24284) @@ -44,6 +44,7 @@ UINT threadId; private: + bool m_isProcess; PINDEX originalStackSize; void CleanUp(); Modified: ptlib/trunk/src/ptlib/msos/win32.cxx =================================================================== --- ptlib/trunk/src/ptlib/msos/win32.cxx 2010-04-26 05:16:17 UTC (rev 24283) +++ ptlib/trunk/src/ptlib/msos/win32.cxx 2010-04-26 05:55:15 UTC (rev 24284) @@ -746,6 +746,7 @@ PThread::PThread() : autoDelete(false) + , m_isProcess(true) , originalStackSize(0) , threadHandle(GetCurrentThread()) , threadId(GetCurrentThreadId()) @@ -753,6 +754,7 @@ if (!PProcess::IsInitialised()) return; + m_isProcess = false; autoDelete = true; DuplicateHandle(GetCurrentProcess(), threadHandle, GetCurrentProcess(), &threadHandle, 0, 0, DUPLICATE_SAME_ACCESS); @@ -773,6 +775,7 @@ Priority priorityLevel, const PString & name) : threadName(name) + , m_isProcess(false) { PAssert(stackSize > 0, PInvalidParameter); originalStackSize = stackSize; @@ -803,7 +806,7 @@ PThread::~PThread() { - if (originalStackSize <= 0) + if (m_isProcess) return; CleanUp(); @@ -854,7 +857,9 @@ void PThread::Restart() { - PAssert(IsTerminated(), "Cannot restart running thread"); + if (!PAssert(originalStackSize != 0, "Cannot restart process/external thread") || + !PAssert(IsTerminated(), "Cannot restart running thread")) + return; CleanUp(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |