Make sure pair caches are layer-specific where they need to be.

(cherry picked from commit 909358e643)
This commit is contained in:
Jeff Young 2022-08-25 17:00:18 +01:00
parent 0593663462
commit fde2b429b9
1 changed files with 5 additions and 3 deletions

View File

@ -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;
} }
}, },