More safety when fetching via sizes.

This commit is contained in:
Jeff Young 2020-11-06 16:43:59 +00:00
parent ae26c92a16
commit 81ea71fb80
2 changed files with 9 additions and 4 deletions

View File

@ -990,8 +990,6 @@ DRC_CONSTRAINT DRC_ENGINE::EvalRulesForItems( DRC_CONSTRAINT_TYPE_T aConstraintI
}
}
// fixme: return optional<drc_constraint>, let the particular test decide what to do if no matching constraint
// is found
static DRC_CONSTRAINT nullConstraint( NULL_CONSTRAINT );
nullConstraint.m_DisallowFlags = 0;

View File

@ -866,6 +866,9 @@ int ROUTER_TOOL::onViaCommand( const TOOL_EVENT& aEvent )
break;
}
sizes.SetViaDiameter( bds.m_ViasMinSize );
sizes.SetViaDrill( bds.m_MinThroughDrill );
if( bds.UseNetClassVia() || viaType == VIATYPE::MICROVIA )
{
class VIA dummyVia( board() );
@ -879,11 +882,15 @@ int ROUTER_TOOL::onViaCommand( const TOOL_EVENT& aEvent )
constraint = bds.m_DRCEngine->EvalRulesForItems( VIA_DIAMETER_CONSTRAINT, &dummyVia,
nullptr, currentLayer );
sizes.SetViaDiameter( constraint.m_Value.OptThenMin() );
if( !constraint.IsNull() )
sizes.SetViaDiameter( constraint.m_Value.OptThenMin() );
constraint = bds.m_DRCEngine->EvalRulesForItems( HOLE_SIZE_CONSTRAINT, &dummyVia, nullptr,
currentLayer );
sizes.SetViaDrill( constraint.m_Value.OptThenMin() );
if( !constraint.IsNull() )
sizes.SetViaDrill( constraint.m_Value.OptThenMin() );
}
else
{