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:
+12
-5
@@ -5,18 +5,25 @@
|
||||
#include "Foreach.h"
|
||||
|
||||
#include "SubscriptionManager.h"
|
||||
static SubscriptionManager<LuaBinding> m_Subscribers;
|
||||
|
||||
SubscriptionManager<LuaBinding> & GetSubscribers()
|
||||
{
|
||||
static SubscriptionManager<LuaBinding> subscribers;
|
||||
return subscribers;
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
void RegisterTypes( lua_State *L )
|
||||
{
|
||||
if( m_Subscribers.m_pSubscribers == NULL )
|
||||
SubscriptionManager<LuaBinding> & subscribers = GetSubscribers();
|
||||
|
||||
if( subscribers.m_pSubscribers.empty() )
|
||||
return;
|
||||
|
||||
/* Register base classes first. */
|
||||
map<RString, LuaBinding *> mapToRegister;
|
||||
FOREACHS( LuaBinding*, *m_Subscribers.m_pSubscribers, p )
|
||||
FOREACHS( LuaBinding*, subscribers.m_pSubscribers, p )
|
||||
mapToRegister[(*p)->GetClassName()] = (*p);
|
||||
|
||||
set<RString> setRegisteredAlready;
|
||||
@@ -59,12 +66,12 @@ REGISTER_WITH_LUA_FUNCTION( RegisterTypes );
|
||||
|
||||
LuaBinding::LuaBinding()
|
||||
{
|
||||
m_Subscribers.Subscribe( this );
|
||||
GetSubscribers().Subscribe( this );
|
||||
}
|
||||
|
||||
LuaBinding::~LuaBinding()
|
||||
{
|
||||
m_Subscribers.Unsubscribe( this );
|
||||
GetSubscribers().Unsubscribe( this );
|
||||
}
|
||||
|
||||
void LuaBinding::Register( lua_State *L )
|
||||
|
||||
Reference in New Issue
Block a user