Fixed segfault which occured when open ing the module editor, loading a module, closing it, and opening the module editor again. This was

caused by prematurely deleting the module editor's m_Pcb pointer, which has the same value (points to the same structure) as 
g_ModuleEditor_Pcb hence should not be 
deleted.
This commit is contained in:
lifekidyeaa 2008-03-14 05:47:35 +00:00
parent fb54ab8649
commit 6d609d1837
5 changed files with 6 additions and 5 deletions

View File

@ -21,7 +21,7 @@
#include <vector>
#ifndef SAFE_DELETE
#define SAFE_DELETE(p) delete (p); (p) = NULL;
#define SAFE_DELETE(p) delete (p); (p) = NULL; //C++ guarantees that operator delete checks its argument for null-ness
#endif
#define INTERNAL_UNIT_TYPE 0 // Internal unit = inch

View File

@ -68,6 +68,7 @@ WinEDA_BasePcbFrame::~WinEDA_BasePcbFrame( void )
void WinEDA_BasePcbFrame::SetBOARD( BOARD* aBoard )
{
if(m_Pcb != g_ModuleEditor_Pcb)
delete m_Pcb;
m_Pcb = aBoard;
}

View File

@ -382,7 +382,7 @@ TRACK* Locate_Piste_Connectee( TRACK* PtRefSegm, TRACK* pt_base,
if( PtSegmN == PtRefSegm )
goto suite;
/* max_dist is the max distance between 2 tack ends which ensure a copper continuty */
/* max_dist is the max distance between 2 track ends which ensure a copper continuty */
max_dist = (PtSegmN->m_Width + PtRefSegm->m_Width)/2;
if( IsPointsAreNear(pos_ref, PtSegmN->m_Start, max_dist) )

View File

@ -136,7 +136,7 @@ WinEDA_ModuleEditFrame::WinEDA_ModuleEditFrame( wxWindow* father, WinEDA_App* pa
m_Pcb->m_PcbFrame = this;
m_CurrentScreen = ScreenModule;
SetCurItem( NULL );
m_CurrentScreen->SetCurItem( NULL );
GetSettings();
wxSize GridSize( 500, 500 );

View File

@ -250,7 +250,7 @@ WinEDA_PcbFrame::~WinEDA_PcbFrame()
m_Parent->m_PcbFrame = NULL;
m_CurrentScreen = ScreenPcb;
delete m_drc;
delete m_Pcb;
if(m_Pcb != g_ModuleEditor_Pcb) delete m_Pcb;
}