From fde2b429b9b6cabfe2f57125ed50717d2ca011a8 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Thu, 25 Aug 2022 17:00:18 +0100 Subject: [PATCH] Make sure pair caches are layer-specific where they need to be. (cherry picked from commit 909358e643ea15031529ea6f044827d57a8f6dc2) --- pcbnew/drc/drc_test_provider_copper_clearance.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pcbnew/drc/drc_test_provider_copper_clearance.cpp b/pcbnew/drc/drc_test_provider_copper_clearance.cpp index 1fe3ce1d8a..b89d5b6291 100644 --- a/pcbnew/drc/drc_test_provider_copper_clearance.cpp +++ b/pcbnew/drc/drc_test_provider_copper_clearance.cpp @@ -532,7 +532,7 @@ void DRC_TEST_PROVIDER_COPPER_CLEARANCE::testTrackClearances() reportAux( wxT( "Testing %d tracks & vias..." ), m_board->Tracks().size() ); - std::map< std::pair, int> checkedPairs; + std::map< std::pair, LSET> checkedPairs; for( PCB_TRACK* track : m_board->Tracks() ) { @@ -565,13 +565,15 @@ void DRC_TEST_PROVIDER_COPPER_CLEARANCE::testTrackClearances() if( static_cast( a ) > static_cast( 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; } else { - checkedPairs[ { a, b } ] = 1; + checkedPairs[ { a, b } ].set( layer ); return true; } },