Make sure pair caches are layer-specific where they need to be.
(cherry picked from commit 909358e643
)
This commit is contained in:
parent
0593663462
commit
fde2b429b9
|
@ -532,7 +532,7 @@ void DRC_TEST_PROVIDER_COPPER_CLEARANCE::testTrackClearances()
|
||||||
|
|
||||||
reportAux( wxT( "Testing %d tracks & vias..." ), m_board->Tracks().size() );
|
reportAux( wxT( "Testing %d tracks & vias..." ), m_board->Tracks().size() );
|
||||||
|
|
||||||
std::map< std::pair<BOARD_ITEM*, BOARD_ITEM*>, int> checkedPairs;
|
std::map< std::pair<BOARD_ITEM*, BOARD_ITEM*>, LSET> checkedPairs;
|
||||||
|
|
||||||
for( PCB_TRACK* track : m_board->Tracks() )
|
for( PCB_TRACK* track : m_board->Tracks() )
|
||||||
{
|
{
|
||||||
|
@ -565,13 +565,15 @@ void DRC_TEST_PROVIDER_COPPER_CLEARANCE::testTrackClearances()
|
||||||
if( static_cast<void*>( a ) > static_cast<void*>( b ) )
|
if( static_cast<void*>( a ) > static_cast<void*>( b ) )
|
||||||
std::swap( a, b );
|
std::swap( a, b );
|
||||||
|
|
||||||
if( checkedPairs.count( { a, b } ) )
|
auto it = checkedPairs.find( { a, b } );
|
||||||
|
|
||||||
|
if( it != checkedPairs.end() && it->second.test( layer ) )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
checkedPairs[ { a, b } ] = 1;
|
checkedPairs[ { a, b } ].set( layer );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue