Fixed segfault in connectivity algo for boards with orphaned nets
Fixes: lp:1701347 * https://bugs.launchpad.net/kicad/+bug/1701347
This commit is contained in:
parent
bafb8c3688
commit
d6820bc925
|
@ -757,7 +757,11 @@ void BOARD::SetElementVisibility( GAL_LAYER_ID LAYER_aPCB, bool isEnabled )
|
|||
// so the hide/show option is a per item selection
|
||||
|
||||
for( unsigned int net = 1; net < GetNetCount(); net++ )
|
||||
GetConnectivity()->GetRatsnestForNet( net )->SetVisible( visible );
|
||||
{
|
||||
auto rn = GetConnectivity()->GetRatsnestForNet( net );
|
||||
if( rn )
|
||||
rn->SetVisible( visible );
|
||||
}
|
||||
|
||||
for( auto track : Tracks() )
|
||||
track->SetLocalRatsnestVisible( isEnabled );
|
||||
|
|
|
@ -566,3 +566,12 @@ const std::vector<BOARD_CONNECTED_ITEM*> CONNECTIVITY_DATA::GetConnectedItems(
|
|||
|
||||
return rv;
|
||||
}
|
||||
|
||||
RN_NET* CONNECTIVITY_DATA::GetRatsnestForNet( int aNet )
|
||||
{
|
||||
if ( aNet < 0 || aNet >= m_nets.size() )
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
return m_nets[ aNet ];
|
||||
}
|
||||
|
|
|
@ -122,11 +122,8 @@ public:
|
|||
* Function GetRatsnestForNet()
|
||||
* Returns the ratsnest, expressed as a set of graph edges for a given net.
|
||||
*/
|
||||
RN_NET* GetRatsnestForNet( int aNet )
|
||||
{
|
||||
return m_nets[aNet];
|
||||
}
|
||||
|
||||
RN_NET* GetRatsnestForNet( int aNet );
|
||||
|
||||
/**
|
||||
* Function PropagateNets()
|
||||
* Propagates the net codes from the source pads to the tracks/vias.
|
||||
|
|
|
@ -103,6 +103,9 @@ void PCB_BASE_FRAME::DrawGeneralRatsnest( wxDC* aDC, int aNetcode )
|
|||
{
|
||||
RN_NET* net = connectivity->GetRatsnestForNet( i );
|
||||
|
||||
if( !net )
|
||||
continue;
|
||||
|
||||
if( ( aNetcode <= 0 ) || ( aNetcode == i ) )
|
||||
{
|
||||
for( const auto& edge : net->GetEdges() )
|
||||
|
|
|
@ -86,6 +86,9 @@ void RATSNEST_VIEWITEM::ViewDraw( int aLayer, KIGFX::VIEW* aView ) const
|
|||
{
|
||||
RN_NET* net = m_data->GetRatsnestForNet( i );
|
||||
|
||||
if( !net )
|
||||
continue;
|
||||
|
||||
// Draw the "static" ratsnest
|
||||
if( i != highlightedNet )
|
||||
gal->SetStrokeColor( color ); // using the default ratsnest color for not highlighted
|
||||
|
|
Loading…
Reference in New Issue