Fixed a lot of memory leaks caused by static globals never getting

deleted and some other objects not getting deleted properly due to missing
destructors.
This commit is contained in:
Shenjoku
2013-04-18 21:17:57 -07:00
parent 5f7001ef0a
commit 01456ed0b9
29 changed files with 239 additions and 171 deletions
+6 -8
View File
@@ -7,12 +7,10 @@
const int MAX_THREADS=128;
static MutexImpl_Win32 *g_pThreadIdMutex = NULL;
static void InitThreadIdMutex()
MutexImpl_Win32 & GetThreadMutex()
{
if( g_pThreadIdMutex != NULL )
return;
g_pThreadIdMutex = smnew MutexImpl_Win32(NULL);
static MutexImpl_Win32 mutex(NULL);
return mutex;
}
static uint64_t g_ThreadIds[MAX_THREADS];
@@ -108,9 +106,9 @@ static DWORD WINAPI StartThread( LPVOID pData )
static int GetOpenSlot( uint64_t iID )
{
InitThreadIdMutex();
MutexImpl_Win32 & mutex = GetThreadMutex();
g_pThreadIdMutex->Lock();
mutex.Lock();
// Find an open slot in g_ThreadIds.
int slot = 0;
@@ -120,7 +118,7 @@ static int GetOpenSlot( uint64_t iID )
g_ThreadIds[slot] = iID;
g_pThreadIdMutex->Unlock();
mutex.Unlock();
return slot;
}