Browse Source

Do not leave stale edges floating around

We assume that all net edges are valid in too many places

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21745

(cherry picked from commit b89d77bf36)
master
Seth Hillbrand 3 weeks ago
parent
commit
c8f04af55a
  1. 9
      pcbnew/ratsnest/ratsnest_data.cpp

9
pcbnew/ratsnest/ratsnest_data.cpp

@ -552,6 +552,15 @@ void RN_NET::RemoveInvalidRefs()
for( CN_EDGE& edge : m_boardEdges )
edge.RemoveInvalidRefs();
auto is_invalid = []( const CN_EDGE& edge )
{
return !edge.GetSourceNode() || !edge.GetTargetNode();
};
m_rnEdges.erase( std::remove_if( m_rnEdges.begin(), m_rnEdges.end(), is_invalid ), m_rnEdges.end() );
m_boardEdges.erase( std::remove_if( m_boardEdges.begin(), m_boardEdges.end(), is_invalid ),
m_boardEdges.end() );
}

Loading…
Cancel
Save