From 798f2bb938462171bb441a6272a25017b75b9ad4 Mon Sep 17 00:00:00 2001 From: "james.k.crook@gmail.com" Date: Sun, 26 Oct 2014 11:59:02 +0000 Subject: [PATCH] Fix memory leak on module list pointer. Also tweaked code to make it shorter and clearer. --- src/ModuleManager.cpp | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/src/ModuleManager.cpp b/src/ModuleManager.cpp index f6cbb2405..d20cb39cf 100644 --- a/src/ModuleManager.cpp +++ b/src/ModuleManager.cpp @@ -178,19 +178,13 @@ void * Module::GetSymbol(wxString name) ModuleManager ModuleManager::mInstance; // Provide builtin modules a means to identify themselves -static wxArrayPtrVoid *Builtins = NULL; +static wxArrayPtrVoid *pBuiltinModuleList = NULL; void RegisterBuiltinModule(ModuleMain moduleMain) { - static bool allocated = false; - - if (!allocated) - { - Builtins = new wxArrayPtrVoid; - allocated = true; - } - - Builtins->Add((void *)moduleMain); + if (pBuiltinModuleList == NULL) + pBuiltinModuleList = new wxArrayPtrVoid; + pBuiltinModuleList->Add((void *)moduleMain); return; } @@ -217,6 +211,8 @@ ModuleManager::~ModuleManager() delete mod; } mDynModules.clear(); + if( pBuiltinModuleList != NULL ) + delete pBuiltinModuleList; } // static @@ -360,14 +356,12 @@ void ModuleManager::InitializeBuiltins() { PluginManager & pm = PluginManager::Get(); - if (!Builtins) - { + if (pBuiltinModuleList==NULL) 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); mDynModules[module->GetID()] = module;