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
+11 -12
View File
@@ -226,17 +226,17 @@ static int LuaPanic( lua_State *L )
}
// Actor registration
static vector<RegisterWithLuaFn> *g_vRegisterActorTypes = NULL;
vector<RegisterWithLuaFn> & GetRegisteredActorTypes()
{
static vector<RegisterWithLuaFn> registeredActorTypes;
return registeredActorTypes;
}
void LuaManager::Register( RegisterWithLuaFn pfn )
{
if( g_vRegisterActorTypes == NULL )
g_vRegisterActorTypes = smnew vector<RegisterWithLuaFn>;
g_vRegisterActorTypes->push_back( pfn );
GetRegisteredActorTypes().push_back( pfn );
}
LuaManager::LuaManager()
{
pImpl = smnew Impl;
@@ -360,13 +360,12 @@ void LuaManager::RegisterTypes()
{
Lua *L = Get();
if( g_vRegisterActorTypes )
vector<RegisterWithLuaFn> & registeredActorTypes = GetRegisteredActorTypes();
for( unsigned i=0; i<registeredActorTypes.size(); i++ )
{
for( unsigned i=0; i<g_vRegisterActorTypes->size(); i++ )
{
RegisterWithLuaFn fn = (*g_vRegisterActorTypes)[i];
fn( L );
}
RegisterWithLuaFn fn = registeredActorTypes[i];
fn( L );
}
Release( L );