PCB_VIEW: Fix a few ASAN issues
This commit is contained in:
parent
50b171fa33
commit
76e8c62269
|
@ -41,6 +41,7 @@
|
||||||
using namespace KIGFX;
|
using namespace KIGFX;
|
||||||
|
|
||||||
VIEW_GROUP::VIEW_GROUP( VIEW* aView ) :
|
VIEW_GROUP::VIEW_GROUP( VIEW* aView ) :
|
||||||
|
VIEW_ITEM(),
|
||||||
m_layer( LAYER_SELECT_OVERLAY )
|
m_layer( LAYER_SELECT_OVERLAY )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,55 +58,54 @@ PCB_VIEW::~PCB_VIEW()
|
||||||
|
|
||||||
void PCB_VIEW::Add( KIGFX::VIEW_ITEM* aItem, int aDrawPriority )
|
void PCB_VIEW::Add( KIGFX::VIEW_ITEM* aItem, int aDrawPriority )
|
||||||
{
|
{
|
||||||
auto item = static_cast<BOARD_ITEM*>( aItem );
|
BOARD_ITEM* boardItem = dynamic_cast<BOARD_ITEM*>( aItem );
|
||||||
|
|
||||||
if( item->Type() == PCB_FOOTPRINT_T )
|
if( boardItem && boardItem->Type() == PCB_FOOTPRINT_T )
|
||||||
{
|
{
|
||||||
FOOTPRINT* footprint = static_cast<FOOTPRINT*>( item );
|
FOOTPRINT* footprint = static_cast<FOOTPRINT*>( boardItem );
|
||||||
footprint->RunOnChildren( [this]( BOARD_ITEM* aChild )
|
footprint->RunOnChildren( [this]( BOARD_ITEM* aChild )
|
||||||
{
|
{
|
||||||
VIEW::Add( aChild );
|
VIEW::Add( aChild );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
VIEW::Add( item, aDrawPriority );
|
VIEW::Add( aItem, aDrawPriority );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PCB_VIEW::Remove( KIGFX::VIEW_ITEM* aItem )
|
void PCB_VIEW::Remove( KIGFX::VIEW_ITEM* aItem )
|
||||||
{
|
{
|
||||||
auto item = static_cast<BOARD_ITEM*>( aItem );
|
BOARD_ITEM* boardItem = dynamic_cast<BOARD_ITEM*>( aItem );
|
||||||
|
|
||||||
|
if( boardItem && boardItem->Type() == PCB_FOOTPRINT_T )
|
||||||
if( item->Type() == PCB_FOOTPRINT_T )
|
|
||||||
{
|
{
|
||||||
FOOTPRINT* footprint = static_cast<FOOTPRINT*>( item );
|
FOOTPRINT* footprint = static_cast<FOOTPRINT*>( boardItem );
|
||||||
footprint->RunOnChildren( [this]( BOARD_ITEM* aChild )
|
footprint->RunOnChildren( [this]( BOARD_ITEM* aChild )
|
||||||
{
|
{
|
||||||
VIEW::Remove( aChild );
|
VIEW::Remove( aChild );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
VIEW::Remove( item );
|
VIEW::Remove( aItem );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PCB_VIEW::Update( const KIGFX::VIEW_ITEM* aItem, int aUpdateFlags ) const
|
void PCB_VIEW::Update( const KIGFX::VIEW_ITEM* aItem, int aUpdateFlags ) const
|
||||||
{
|
{
|
||||||
const BOARD_ITEM* item = static_cast<const BOARD_ITEM*>( aItem );
|
const BOARD_ITEM* boardItem = dynamic_cast<const BOARD_ITEM*>( aItem );
|
||||||
|
|
||||||
if( item->Type() == PCB_FOOTPRINT_T )
|
if( boardItem && boardItem->Type() == PCB_FOOTPRINT_T )
|
||||||
{
|
{
|
||||||
const FOOTPRINT* footprint = static_cast<const FOOTPRINT*>( item );
|
const FOOTPRINT* footprint = static_cast<const FOOTPRINT*>( boardItem );
|
||||||
footprint->RunOnChildren(
|
footprint->RunOnChildren(
|
||||||
[this, aUpdateFlags]( BOARD_ITEM* aModItem )
|
[this, aUpdateFlags]( BOARD_ITEM* aModItem )
|
||||||
{
|
{
|
||||||
VIEW::Update( aModItem, aUpdateFlags );
|
VIEW::Update( aModItem, aUpdateFlags );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
else if( item->Type() == PCB_GROUP_T )
|
else if( boardItem && boardItem->Type() == PCB_GROUP_T )
|
||||||
{
|
{
|
||||||
const PCB_GROUP* group = static_cast<const PCB_GROUP*>( item );
|
const PCB_GROUP* group = static_cast<const PCB_GROUP*>( boardItem );
|
||||||
group->RunOnChildren(
|
group->RunOnChildren(
|
||||||
[this, aUpdateFlags]( BOARD_ITEM* aModItem )
|
[this, aUpdateFlags]( BOARD_ITEM* aModItem )
|
||||||
{
|
{
|
||||||
|
@ -114,7 +113,7 @@ void PCB_VIEW::Update( const KIGFX::VIEW_ITEM* aItem, int aUpdateFlags ) const
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
VIEW::Update( item, aUpdateFlags );
|
VIEW::Update( aItem, aUpdateFlags );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue