Coverity fixes: 280374, 313611, 313648, 313649, and 314720.
This commit is contained in:
parent
0ef63aca47
commit
dd4298bb94
|
@ -53,6 +53,7 @@ EE_GRID_HELPER::EE_GRID_HELPER( TOOL_MANAGER* aToolMgr ) :
|
||||||
{
|
{
|
||||||
m_enableSnap = true;
|
m_enableSnap = true;
|
||||||
m_enableSnapLine = true;
|
m_enableSnapLine = true;
|
||||||
|
m_enableGrid = true;
|
||||||
m_snapItem = nullptr;
|
m_snapItem = nullptr;
|
||||||
KIGFX::VIEW* view = m_toolMgr->GetView();
|
KIGFX::VIEW* view = m_toolMgr->GetView();
|
||||||
|
|
||||||
|
|
|
@ -43,8 +43,8 @@
|
||||||
- DRCE_TOO_MANY_VIAS
|
- DRCE_TOO_MANY_VIAS
|
||||||
Todo:
|
Todo:
|
||||||
- arc support.
|
- arc support.
|
||||||
- improve recognition of coupled segments (now anything that's parallel is considered coupled, causing
|
- improve recognition of coupled segments (now anything that's parallel is considered
|
||||||
DRC errors on meanders)
|
coupled, causing DRC errors on meanders)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace test {
|
namespace test {
|
||||||
|
@ -169,7 +169,10 @@ struct DIFF_PAIR_COUPLED_SEGMENTS
|
||||||
|
|
||||||
DIFF_PAIR_COUPLED_SEGMENTS() :
|
DIFF_PAIR_COUPLED_SEGMENTS() :
|
||||||
parentN( nullptr ),
|
parentN( nullptr ),
|
||||||
parentP( nullptr )
|
parentP( nullptr ),
|
||||||
|
computedGap( 0 ),
|
||||||
|
layer( UNDEFINED_LAYER ),
|
||||||
|
couplingOK( false )
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -349,7 +352,8 @@ bool test::DRC_TEST_PROVIDER_DIFF_PAIR_COUPLING::Run()
|
||||||
wxString nameP = niP->GetNetname();
|
wxString nameP = niP->GetNetname();
|
||||||
wxString nameN = niN->GetNetname();
|
wxString nameN = niN->GetNetname();
|
||||||
|
|
||||||
reportAux( wxString::Format( "Rule '%s', DP: (+) %s - (-) %s", it.first.parentRule->m_Name, nameP, nameN ) );
|
reportAux( wxString::Format( "Rule '%s', DP: (+) %s - (-) %s",
|
||||||
|
it.first.parentRule->m_Name, nameP, nameN ) );
|
||||||
|
|
||||||
extractDiffPairCoupledItems( it.second, copperTree );
|
extractDiffPairCoupledItems( it.second, copperTree );
|
||||||
|
|
||||||
|
@ -359,8 +363,10 @@ bool test::DRC_TEST_PROVIDER_DIFF_PAIR_COUPLING::Run()
|
||||||
|
|
||||||
drc_dbg(10, " coupled prims : %d\n", (int) it.second.coupled.size() );
|
drc_dbg(10, " coupled prims : %d\n", (int) it.second.coupled.size() );
|
||||||
|
|
||||||
OPT<DRC_CONSTRAINT> gapConstraint = it.first.parentRule->FindConstraint( DIFF_PAIR_GAP_CONSTRAINT );
|
OPT<DRC_CONSTRAINT> gapConstraint =
|
||||||
OPT<DRC_CONSTRAINT> maxUncoupledConstraint = it.first.parentRule->FindConstraint( DIFF_PAIR_MAX_UNCOUPLED_CONSTRAINT );
|
it.first.parentRule->FindConstraint( DIFF_PAIR_GAP_CONSTRAINT );
|
||||||
|
OPT<DRC_CONSTRAINT> maxUncoupledConstraint =
|
||||||
|
it.first.parentRule->FindConstraint( DIFF_PAIR_MAX_UNCOUPLED_CONSTRAINT );
|
||||||
|
|
||||||
for( auto& item : it.second.itemsN )
|
for( auto& item : it.second.itemsN )
|
||||||
{
|
{
|
||||||
|
@ -401,7 +407,8 @@ bool test::DRC_TEST_PROVIDER_DIFF_PAIR_COUPLING::Run()
|
||||||
overlay->Line( cpair.coupledN );
|
overlay->Line( cpair.coupledN );
|
||||||
}
|
}
|
||||||
|
|
||||||
drc_dbg(10, " len %d gap %d l %d\n", length, gap, cpair.parentP->GetLayer() );
|
drc_dbg( 10, " len %d gap %d l %d\n", length, gap,
|
||||||
|
cpair.parentP->GetLayer() );
|
||||||
|
|
||||||
if( gapConstraint )
|
if( gapConstraint )
|
||||||
{
|
{
|
||||||
|
@ -412,7 +419,6 @@ bool test::DRC_TEST_PROVIDER_DIFF_PAIR_COUPLING::Run()
|
||||||
if ( val.HasMax() && gap > val.Max() )
|
if ( val.HasMax() && gap > val.Max() )
|
||||||
insideRange = false;
|
insideRange = false;
|
||||||
|
|
||||||
|
|
||||||
// if(val.HasMin() && val.HasMax() )
|
// if(val.HasMin() && val.HasMax() )
|
||||||
// drc_dbg(10, "Vmin %d vmax %d\n", val.Min(), val.Max() );
|
// drc_dbg(10, "Vmin %d vmax %d\n", val.Min(), val.Max() );
|
||||||
|
|
||||||
|
@ -424,10 +430,10 @@ bool test::DRC_TEST_PROVIDER_DIFF_PAIR_COUPLING::Run()
|
||||||
}
|
}
|
||||||
|
|
||||||
int totalLen = std::max( it.second.totalLengthN, it.second.totalLengthP );
|
int totalLen = std::max( it.second.totalLengthN, it.second.totalLengthP );
|
||||||
reportAux( wxString::Format( " - coupled length: %s, total length: %s",
|
reportAux( wxString::Format( " - coupled length: %s, total length: %s",
|
||||||
|
|
||||||
MessageTextFromValue( userUnits(), it.second.totalCoupled ),
|
MessageTextFromValue( userUnits(), it.second.totalCoupled ),
|
||||||
MessageTextFromValue( userUnits(), totalLen ) ) );
|
MessageTextFromValue( userUnits(), totalLen ) ) );
|
||||||
|
|
||||||
int totalUncoupled = totalLen - it.second.totalCoupled;
|
int totalUncoupled = totalLen - it.second.totalCoupled;
|
||||||
|
|
||||||
|
@ -471,16 +477,16 @@ bool test::DRC_TEST_PROVIDER_DIFF_PAIR_COUPLING::Run()
|
||||||
auto val = gapConstraint->GetValue();
|
auto val = gapConstraint->GetValue();
|
||||||
auto drcItem = DRC_ITEM::Create( DRCE_DIFF_PAIR_GAP_OUT_OF_RANGE );
|
auto drcItem = DRC_ITEM::Create( DRCE_DIFF_PAIR_GAP_OUT_OF_RANGE );
|
||||||
|
|
||||||
m_msg = drcItem->GetErrorText() + " (" + gapConstraint->GetParentRule()->m_Name + " ";
|
m_msg = drcItem->GetErrorText() + " (" +
|
||||||
|
gapConstraint->GetParentRule()->m_Name + " ";
|
||||||
|
|
||||||
if( val.HasMin() )
|
if( val.HasMin() )
|
||||||
m_msg += wxString::Format( _( "minimum gap: %s; " ),
|
m_msg += wxString::Format( _( "minimum gap: %s; " ),
|
||||||
MessageTextFromValue( userUnits(), val.Min() ) );
|
MessageTextFromValue( userUnits(), val.Min() ) );
|
||||||
|
|
||||||
if( val.HasMax() )
|
if( val.HasMax() )
|
||||||
m_msg += wxString::Format( _( "maximum gap: %s; " ),
|
m_msg += wxString::Format( _( "maximum gap: %s; " ),
|
||||||
MessageTextFromValue( userUnits(), val.Max() ) );
|
MessageTextFromValue( userUnits(), val.Max() ) );
|
||||||
|
|
||||||
|
|
||||||
m_msg += wxString::Format( _( "actual: %s)" ),
|
m_msg += wxString::Format( _( "actual: %s)" ),
|
||||||
MessageTextFromValue( userUnits(), cpair.computedGap ) );
|
MessageTextFromValue( userUnits(), cpair.computedGap ) );
|
||||||
|
|
|
@ -116,7 +116,8 @@ static const TOOL_ACTION ACT_PlaceMicroVia( "pcbnew.InteractiveRouter.PlaceMicro
|
||||||
_( "Place Microvia" ), _( "Adds a microvia at the end of currently routed track." ),
|
_( "Place Microvia" ), _( "Adds a microvia at the end of currently routed track." ),
|
||||||
via_microvia_xpm, AF_NONE, (void*) VIA_ACTION_FLAGS::MICROVIA );
|
via_microvia_xpm, AF_NONE, (void*) VIA_ACTION_FLAGS::MICROVIA );
|
||||||
|
|
||||||
static const TOOL_ACTION ACT_SelLayerAndPlaceThroughVia( "pcbnew.InteractiveRouter.SelLayerAndPlaceVia",
|
static const TOOL_ACTION ACT_SelLayerAndPlaceThroughVia(
|
||||||
|
"pcbnew.InteractiveRouter.SelLayerAndPlaceVia",
|
||||||
AS_CONTEXT,
|
AS_CONTEXT,
|
||||||
'<', LEGACY_HK_NAME( "Select Layer and Add Through Via" ),
|
'<', LEGACY_HK_NAME( "Select Layer and Add Through Via" ),
|
||||||
_( "Select Layer and Place Through Via..." ),
|
_( "Select Layer and Place Through Via..." ),
|
||||||
|
@ -124,7 +125,8 @@ static const TOOL_ACTION ACT_SelLayerAndPlaceThroughVia( "pcbnew.InteractiveRout
|
||||||
select_w_layer_xpm, AF_NONE,
|
select_w_layer_xpm, AF_NONE,
|
||||||
(void*) ( VIA_ACTION_FLAGS::VIA | VIA_ACTION_FLAGS::SELECT_LAYER ) );
|
(void*) ( VIA_ACTION_FLAGS::VIA | VIA_ACTION_FLAGS::SELECT_LAYER ) );
|
||||||
|
|
||||||
static const TOOL_ACTION ACT_SelLayerAndPlaceBlindVia( "pcbnew.InteractiveRouter.SelLayerAndPlaceBlindVia",
|
static const TOOL_ACTION ACT_SelLayerAndPlaceBlindVia(
|
||||||
|
"pcbnew.InteractiveRouter.SelLayerAndPlaceBlindVia",
|
||||||
AS_CONTEXT,
|
AS_CONTEXT,
|
||||||
MD_ALT + '<', LEGACY_HK_NAME( "Select Layer and Add Blind/Buried Via" ),
|
MD_ALT + '<', LEGACY_HK_NAME( "Select Layer and Add Blind/Buried Via" ),
|
||||||
_( "Select Layer and Place Blind/Buried Via..." ),
|
_( "Select Layer and Place Blind/Buried Via..." ),
|
||||||
|
@ -488,6 +490,7 @@ void ROUTER_TOOL::handleCommonEvents( const TOOL_EVENT& aEvent )
|
||||||
case '0':
|
case '0':
|
||||||
{
|
{
|
||||||
auto logger = m_router->Logger();
|
auto logger = m_router->Logger();
|
||||||
|
|
||||||
if( ! logger )
|
if( ! logger )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -502,17 +505,18 @@ void ROUTER_TOOL::handleCommonEvents( const TOOL_EVENT& aEvent )
|
||||||
if( evt.item && evt.item->Parent() )
|
if( evt.item && evt.item->Parent() )
|
||||||
id = evt.item->Parent()->m_Uuid.AsString();
|
id = evt.item->Parent()->m_Uuid.AsString();
|
||||||
|
|
||||||
fprintf(f, "event %d %d %d %s\n", evt.p.x, evt.p.y, evt.type, (const char*) id.c_str() );
|
fprintf( f, "event %d %d %d %s\n", evt.p.x, evt.p.y, evt.type,
|
||||||
|
(const char*) id.c_str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose(f);
|
fclose( f );
|
||||||
|
|
||||||
// Export as *.kicad_pcb format, using a strategy which is specifically chosen
|
// Export as *.kicad_pcb format, using a strategy which is specifically chosen
|
||||||
// as an example on how it could also be used to send it to the system clipboard.
|
// as an example on how it could also be used to send it to the system clipboard.
|
||||||
|
|
||||||
PCB_IO pcb_io;
|
PCB_IO pcb_io;
|
||||||
|
|
||||||
pcb_io.Save("/tmp/pns.dump", m_iface->GetBoard(), nullptr );
|
pcb_io.Save( "/tmp/pns.dump", m_iface->GetBoard(), nullptr );
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -662,6 +666,8 @@ int ROUTER_TOOL::onViaCommand( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
int ROUTER_TOOL::handleLayerSwitch( const TOOL_EVENT& aEvent, bool aForceVia )
|
int ROUTER_TOOL::handleLayerSwitch( const TOOL_EVENT& aEvent, bool aForceVia )
|
||||||
{
|
{
|
||||||
|
wxCHECK( m_router, 0 );
|
||||||
|
|
||||||
if( !IsToolActive() )
|
if( !IsToolActive() )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -747,7 +753,7 @@ int ROUTER_TOOL::handleLayerSwitch( const TOOL_EVENT& aEvent, bool aForceVia )
|
||||||
targetLayer = frame()->SelectLayer( static_cast<PCB_LAYER_ID>( currentLayer ),
|
targetLayer = frame()->SelectLayer( static_cast<PCB_LAYER_ID>( currentLayer ),
|
||||||
LSET::AllNonCuMask(), dlgPosition );
|
LSET::AllNonCuMask(), dlgPosition );
|
||||||
|
|
||||||
// Reset the cursor to the position where the event occured
|
// Reset the cursor to the position where the event occurred
|
||||||
controls()->SetCursorPosition( aEvent.HasPosition() ? aEvent.Position() : dlgPosition );
|
controls()->SetCursorPosition( aEvent.HasPosition() ? aEvent.Position() : dlgPosition );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1010,7 +1016,7 @@ void ROUTER_TOOL::performRouting()
|
||||||
{
|
{
|
||||||
setCursor();
|
setCursor();
|
||||||
|
|
||||||
// Don't crash if we missed an operation that cancelled routing.
|
// Don't crash if we missed an operation that canceled routing.
|
||||||
if( !m_router->RoutingInProgress() )
|
if( !m_router->RoutingInProgress() )
|
||||||
{
|
{
|
||||||
if( evt->IsCancelInteractive() )
|
if( evt->IsCancelInteractive() )
|
||||||
|
|
|
@ -692,6 +692,8 @@ int EDIT_TOOL::ChangeTrackWidth( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
TRACK* track = dynamic_cast<TRACK*>( item );
|
TRACK* track = dynamic_cast<TRACK*>( item );
|
||||||
|
|
||||||
|
wxCHECK( track, 0 );
|
||||||
|
|
||||||
m_commit->Modify( track );
|
m_commit->Modify( track );
|
||||||
|
|
||||||
int new_width = board()->GetDesignSettings().GetCurrentTrackWidth();
|
int new_width = board()->GetDesignSettings().GetCurrentTrackWidth();
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
* This program source code file is part kicad2mcad
|
* This program source code file is part kicad2mcad
|
||||||
*
|
*
|
||||||
* Copyright (C) 2015-2016 Cirilo Bernardo <cirilo.bernardo@gmail.com>
|
* Copyright (C) 2015-2016 Cirilo Bernardo <cirilo.bernardo@gmail.com>
|
||||||
|
* Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -1069,7 +1070,7 @@ static bool getHollerith( const std::string& aString, size_t& aIndex, wxString&
|
||||||
i2 += nchars;
|
i2 += nchars;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( aString[i2] != '"' )
|
if( i2 >= aString.size() || aString[i2] != '"' )
|
||||||
{
|
{
|
||||||
std::ostringstream ostr;
|
std::ostringstream ostr;
|
||||||
ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n";
|
ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n";
|
||||||
|
|
Loading…
Reference in New Issue