I have traced the crash to the final "delete booleng;" (last line) of the 
method "void ZONE_CONTAINER::AddClearanceAreasPolygonsToPolysList( BOARD* aPcb 
)" in the "zones_convert_brd_items_to_polygons.cpp" class for pcbnew.

The crash is being caused by the kbool class "Bool_Engine" destructor, which is 
in turn caused by the DL_Iter<Dtype>::~DL_Iter() destructor via the call to 
"delete _linkiter;" in the Bool_Engine destructor.  When this is commented out, 
the zone fill no longer crashes when using thermal reliefs, e.g.:

Bool_Engine::~Bool_Engine()
{
    if ( m_logfile != NULL )
        fclose ( m_logfile );

    //delete _linkiter;  <-- this prevents the crash
    delete m_graphlist;
}

Obviously this is not a fix, and I'm not sure why the 
DL_Iter<Dtype>::~DL_Iter() would crash pcbnew on my system.  I will continue to 
look into it to find the solution, but if anyone is familiar with kbool (and 
~DL_Iter()) and understands what the problem could be, please chime in.  I ran 
out of time last night...

Thx!




Reply via email to