From 862c36a08bebf0e75367ad7ed862cdaa2efe5c25 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Sun, 25 Mar 2018 12:13:50 +0100 Subject: [PATCH] Added check if thraeding is running before executing start thread. --- src/OpenThreads/pthreads/PThread.cpp | 8 ++++++-- src/OpenThreads/win32/Win32Thread.cpp | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/OpenThreads/pthreads/PThread.cpp b/src/OpenThreads/pthreads/PThread.cpp index f74529045..3b6b6e838 100644 --- a/src/OpenThreads/pthreads/PThread.cpp +++ b/src/OpenThreads/pthreads/PThread.cpp @@ -603,6 +603,12 @@ bool Thread::isRunning() // int Thread::start() { + PThreadPrivateData *pd = static_cast (_prvData); + if (pd->isRunning()) + { + return 0; + } + int status; pthread_attr_t thread_attr; @@ -612,8 +618,6 @@ int Thread::start() { return status; } - PThreadPrivateData *pd = static_cast (_prvData); - //------------------------------------------------------------------------- // Set the stack size if requested, but not less than a platform reasonable // value. diff --git a/src/OpenThreads/win32/Win32Thread.cpp b/src/OpenThreads/win32/Win32Thread.cpp index b0110dd41..ce1db0b73 100644 --- a/src/OpenThreads/win32/Win32Thread.cpp +++ b/src/OpenThreads/win32/Win32Thread.cpp @@ -334,6 +334,11 @@ bool Thread::isRunning() { int Thread::start() { Win32ThreadPrivateData *pd = static_cast (_prvData); + if (pd->isRunning) + { + return 0; + } + //------------------------------------------------------------------------- // Prohibit the stack size from being changed. // (bb 5/13/2005) it actually doesn't matter.