1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-08-03 17:39:25 +02:00

Fix memory leak on module list pointer.

Also tweaked code to make it shorter and clearer.
This commit is contained in:
james.k.crook@gmail.com 2014-10-26 11:59:02 +00:00
parent 31fa2be749
commit 798f2bb938

View File

@ -178,19 +178,13 @@ void * Module::GetSymbol(wxString name)
ModuleManager ModuleManager::mInstance; ModuleManager ModuleManager::mInstance;
// Provide builtin modules a means to identify themselves // Provide builtin modules a means to identify themselves
static wxArrayPtrVoid *Builtins = NULL; static wxArrayPtrVoid *pBuiltinModuleList = NULL;
void RegisterBuiltinModule(ModuleMain moduleMain) void RegisterBuiltinModule(ModuleMain moduleMain)
{ {
static bool allocated = false; if (pBuiltinModuleList == NULL)
pBuiltinModuleList = new wxArrayPtrVoid;
if (!allocated)
{
Builtins = new wxArrayPtrVoid;
allocated = true;
}
Builtins->Add((void *)moduleMain);
pBuiltinModuleList->Add((void *)moduleMain);
return; return;
} }
@ -217,6 +211,8 @@ ModuleManager::~ModuleManager()
delete mod; delete mod;
} }
mDynModules.clear(); mDynModules.clear();
if( pBuiltinModuleList != NULL )
delete pBuiltinModuleList;
} }
// static // static
@ -360,14 +356,12 @@ void ModuleManager::InitializeBuiltins()
{ {
PluginManager & pm = PluginManager::Get(); PluginManager & pm = PluginManager::Get();
if (!Builtins) if (pBuiltinModuleList==NULL)
{
return; return;
}
for (size_t i = 0, cnt = Builtins->GetCount(); i < cnt; i++) for (size_t i = 0, cnt = pBuiltinModuleList->GetCount(); i < cnt; i++)
{ {
ModuleMain audacityMain = (ModuleMain) (*Builtins)[i]; ModuleMain audacityMain = (ModuleMain) (*pBuiltinModuleList)[i];
ModuleInterface *module = audacityMain(this, NULL); ModuleInterface *module = audacityMain(this, NULL);
mDynModules[module->GetID()] = module; mDynModules[module->GetID()] = module;