diff --git a/projects/mtg/include/TestSuiteAI.h b/projects/mtg/include/TestSuiteAI.h index 14e6af2de..5829cbc96 100644 --- a/projects/mtg/include/TestSuiteAI.h +++ b/projects/mtg/include/TestSuiteAI.h @@ -81,7 +81,7 @@ private: string files[1024]; void cleanup(); - vector mWorkerThread; + vector mWorkerThread; Rules* mRules; bool mProcessing; diff --git a/projects/mtg/src/TestSuiteAI.cpp b/projects/mtg/src/TestSuiteAI.cpp index 24b9d2531..62fb21f78 100644 --- a/projects/mtg/src/TestSuiteAI.cpp +++ b/projects/mtg/src/TestSuiteAI.cpp @@ -452,7 +452,8 @@ TestSuite::~TestSuite() mProcessing = false; while(mWorkerThread.size()) { - mWorkerThread.back().join(); + mWorkerThread.back()->join(); + SAFE_DELETE(mWorkerThread.back()); mWorkerThread.pop_back(); } @@ -545,13 +546,18 @@ int TestSuite::loadNext() if(!mProcessing) { // "I don't like to wait" mode mProcessing = true; - mWorkerThread.clear(); + while(mWorkerThread.size()) + { + mWorkerThread.back()->join(); + SAFE_DELETE(mWorkerThread.back()); + mWorkerThread.pop_back(); + } size_t thread_count = 1; #ifdef QT_CONFIG thread_count = QThread::idealThreadCount(); #endif for(size_t i = 0; i < (thread_count-1); i++) - mWorkerThread.push_back(boost::thread(ThreadProc, this)); + mWorkerThread.push_back(new boost::thread(ThreadProc, this)); } cleanup();