Removed some potential memory leaks.

This commit is contained in:
Maciej Suminski 2013-09-11 19:37:52 +02:00
parent f179183dea
commit d13355f7fe
5 changed files with 24 additions and 2 deletions

View File

@ -86,6 +86,19 @@ TOOL_MANAGER::TOOL_MANAGER()
}
TOOL_MANAGER::~TOOL_MANAGER()
{
std::map<TOOL_BASE*, TOOL_STATE*>::iterator it, it_end;
for( it = m_toolState.begin(), it_end = m_toolState.end(); it != it_end; ++it )
{
delete it->second->cofunc; // delete cofunction
delete it->second; // delete TOOL_STATE
delete it->first; // delete the tool itself
}
}
void TOOL_MANAGER::RegisterTool( TOOL_BASE* aTool )
{
TOOL_STATE* st = new TOOL_STATE;

View File

@ -95,8 +95,8 @@ protected:
/// main window.
wxAuiToolBar* m_auxiliaryToolBar;
TOOL_MANAGER *m_toolManager;
TOOL_DISPATCHER *m_toolDispatcher;
TOOL_MANAGER* m_toolManager;
TOOL_DISPATCHER* m_toolDispatcher;
void updateGridSelectBox();
void updateZoomSelectBox();

View File

@ -118,6 +118,7 @@ protected:
// to know the footprint name of components.
void setupTools();
void destroyTools();
void onGenericCommand( wxCommandEvent& aEvent );
// we'll use lower case function names for private member functions.

View File

@ -485,6 +485,7 @@ PCB_EDIT_FRAME::PCB_EDIT_FRAME( wxWindow* parent, const wxString& title,
PCB_EDIT_FRAME::~PCB_EDIT_FRAME()
{
destroyTools();
m_RecordingMacros = -1;
for( int i = 0; i < 10; i++ )

View File

@ -50,6 +50,13 @@ void PCB_EDIT_FRAME::setupTools()
}
void PCB_EDIT_FRAME::destroyTools()
{
delete m_toolDispatcher;
delete m_toolManager;
}
void PCB_EDIT_FRAME::onGenericCommand( wxCommandEvent &aEvent )
{
m_toolDispatcher->DispatchWxCommand( aEvent );