From 21a9c65791e277b0c0d789df11424c578accdc9b Mon Sep 17 00:00:00 2001 From: Steve Checkoway Date: Sat, 17 Dec 2005 12:32:59 +0000 Subject: [PATCH] Fix crash if thread exits before the dtor is called. --- stepmania/src/RageThreads.cpp | 7 ++++--- stepmania/src/RageThreads.h | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/stepmania/src/RageThreads.cpp b/stepmania/src/RageThreads.cpp index 42a3b2c84f..3818f38bb3 100644 --- a/stepmania/src/RageThreads.cpp +++ b/stepmania/src/RageThreads.cpp @@ -190,7 +190,8 @@ static ThreadSlot *GetUnknownThreadSlot() return g_pUnknownThreadSlot; } -RageThread::RageThread() +RageThread::RageThread(): + m_bThisThread( false ) { m_pSlot = NULL; } @@ -251,7 +252,7 @@ void RageThread::CreateThisThread() ASSERT( m_pSlot == NULL ); InitThreads(); - + m_bThisThread = true; LockMut( g_ThreadSlotsLock ); int slotno = FindEmptyThreadSlot(); @@ -312,7 +313,7 @@ int RageThread::Wait() ASSERT( m_pSlot->pImpl != NULL ); int ret; - if( m_pSlot->id == GetThisThreadId() ) + if( m_bThisThread ) ret = 0; else ret = m_pSlot->pImpl->Wait(); diff --git a/stepmania/src/RageThreads.h b/stepmania/src/RageThreads.h index 887de0397a..33653b0ec6 100644 --- a/stepmania/src/RageThreads.h +++ b/stepmania/src/RageThreads.h @@ -9,6 +9,7 @@ class RageThread { ThreadSlot *m_pSlot; CString name; + bool m_bThisThread; static bool s_bSystemSupportsTLS; static bool s_bIsShowingDialog;