diff --git a/pcbnew/drc/drc_test_provider_copper_clearance.cpp b/pcbnew/drc/drc_test_provider_copper_clearance.cpp index 0935e2565d..b03c5639bf 100644 --- a/pcbnew/drc/drc_test_provider_copper_clearance.cpp +++ b/pcbnew/drc/drc_test_provider_copper_clearance.cpp @@ -584,6 +584,9 @@ void DRC_TEST_PROVIDER_COPPER_CLEARANCE::testTrackClearances() // Visitor: [&]( BOARD_ITEM* other ) -> bool { + if( m_drcEngine->IsCancelled() ) + return false; + if( other->Type() == PCB_PAD_T && static_cast( other )->IsFreePad() ) { if( other->GetEffectiveShape( layer )->Collide( trackShape.get() ) ) @@ -593,11 +596,11 @@ void DRC_TEST_PROVIDER_COPPER_CLEARANCE::testTrackClearances() if( it == freePadsUsageMap.end() ) { freePadsUsageMap[ other ] = track->GetNetCode(); - return false; + return true; // Continue colliding tests } else if( it->second == track->GetNetCode() ) { - return false; + return true; // Continue colliding tests } } } @@ -619,7 +622,8 @@ void DRC_TEST_PROVIDER_COPPER_CLEARANCE::testTrackClearances() if( it != checkedPairs.end() ) it->second.has_error = true; - return m_drcEngine->GetReportAllTrackErrors() && !m_drcEngine->IsCancelled(); + if( !m_drcEngine->GetReportAllTrackErrors() ) + return false; // We're done with this track } return !m_drcEngine->IsCancelled();