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:
+11
-12
@@ -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 );
|
||||
|
||||
Reference in New Issue
Block a user