=== modified file 'pcbnew/drc_clearance_test_functions.cpp' --- pcbnew/drc_clearance_test_functions.cpp 2011-12-14 04:29:25 +0000 +++ pcbnew/drc_clearance_test_functions.cpp 2011-12-18 03:29:20 +0000 @@ -342,9 +342,13 @@ wxPoint segEndPoint; for( track = aStart; track; track = track->Next() ) { - // No problem if segments have the same net code: + // No problem if segments have the same net code... if( net_code_ref == track->GetNet() ) - continue; + { + // ...unless both TRACK are vias of the same net + if( !( aRefSeg->Type() == PCB_VIA_T && track->Type() == PCB_VIA_T ) ) + continue; + } // No problem if segment are on different layers : if( ( layerMask & track->ReturnMaskLayer() ) == 0 ) === modified file 'pcbnew/editrack-part2.cpp' --- pcbnew/editrack-part2.cpp 2011-12-14 04:29:25 +0000 +++ pcbnew/editrack-part2.cpp 2011-12-18 03:25:52 +0000 @@ -148,7 +148,9 @@ break; } - if( Drc_On && BAD_DRC == m_drc->Drc( via, GetBoard()->m_Track ) ) + if( Drc_On && + ( BAD_DRC == m_drc->Drc( via, g_FirstTrackSegment ) || + BAD_DRC == m_drc->Drc( via, GetBoard()->m_Track ) ) ) { /* DRC fault: the Via cannot be placed here ... */ delete via;