Coverity issue fixes.
Issues #331869, #331875, #332203, #332159, #332171, #332180, and #332648.
This commit is contained in:
parent
49e6b80fc5
commit
65c7958293
|
@ -178,6 +178,7 @@ NUMERIC_EVALUATOR::Token NUMERIC_EVALUATOR::getToken()
|
|||
retval.token = ENDS;
|
||||
retval.value.dValue = 0;
|
||||
retval.value.valid = false;
|
||||
retval.value.text[0] = 0;
|
||||
|
||||
if( m_token.token == nullptr )
|
||||
return retval;
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
/*
|
||||
This file is part of libeval, a simple math expression evaluator
|
||||
|
||||
Copyright (C) 2017 Michael Geselbracht, mgeselbracht3@gmail.com
|
||||
Copyright (C) 2019-2020 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
* This file is part of libeval, a simple math expression evaluator
|
||||
*
|
||||
* Copyright (C) 2017 Michael Geselbracht, mgeselbracht3@gmail.com
|
||||
* Copyright (C) 2019-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <memory>
|
||||
#include <set>
|
||||
|
@ -419,6 +419,7 @@ bool COMPILER::lexDefault( T_TOKEN& aToken )
|
|||
wxString msg;
|
||||
|
||||
retval.value.str = nullptr;
|
||||
retval.value.num = 0.0;
|
||||
retval.token = G_ENDS;
|
||||
|
||||
if( m_tokenizer.Done() )
|
||||
|
@ -561,7 +562,6 @@ bool COMPILER::lexDefault( T_TOKEN& aToken )
|
|||
case '.': retval.token = G_STRUCT_REF; break;
|
||||
case ',': retval.token = G_COMMA; break;
|
||||
|
||||
|
||||
default:
|
||||
reportError( CST_PARSE, wxString::Format( _( "Unrecognized character '%c'" ),
|
||||
(char) ch ) );
|
||||
|
@ -774,14 +774,14 @@ static std::vector<TREE_NODE*> squashParamList( TREE_NODE* root )
|
|||
|
||||
if( n )
|
||||
{
|
||||
args.push_back(n);
|
||||
args.push_back( n );
|
||||
}
|
||||
}
|
||||
|
||||
std::reverse( args.begin(), args.end() );
|
||||
|
||||
for( size_t i = 0; i < args.size(); i++ )
|
||||
libeval_dbg(10, "squash arg%d: %s\n", int( i ), *args[i]->value.str );
|
||||
libeval_dbg( 10, "squash arg%d: %s\n", int( i ), *args[i]->value.str );
|
||||
|
||||
return args;
|
||||
}
|
||||
|
@ -866,12 +866,14 @@ bool COMPILER::generateUCode( UCODE* aCode, CONTEXT* aPreflightContext )
|
|||
if( !vref )
|
||||
{
|
||||
msg.Printf( _( "Unrecognized item '%s'" ), itemName );
|
||||
reportError( CST_CODEGEN, msg, node->leaf[0]->srcPos - (int) itemName.length() );
|
||||
reportError( CST_CODEGEN, msg,
|
||||
node->leaf[0]->srcPos - (int) itemName.length() );
|
||||
}
|
||||
else if( vref->GetType() == VT_PARSE_ERROR )
|
||||
{
|
||||
msg.Printf( _( "Unrecognized property '%s'" ), propName );
|
||||
reportError( CST_CODEGEN, msg, node->leaf[1]->srcPos - (int) propName.length() );
|
||||
reportError( CST_CODEGEN, msg,
|
||||
node->leaf[1]->srcPos - (int) propName.length() );
|
||||
}
|
||||
|
||||
node->leaf[0]->isVisited = true;
|
||||
|
@ -894,7 +896,8 @@ bool COMPILER::generateUCode( UCODE* aCode, CONTEXT* aPreflightContext )
|
|||
if( !vref )
|
||||
{
|
||||
msg.Printf( _( "Unrecognized item '%s'" ), itemName );
|
||||
reportError( CST_CODEGEN, msg, node->leaf[0]->srcPos - (int) itemName.length() );
|
||||
reportError( CST_CODEGEN, msg,
|
||||
node->leaf[0]->srcPos - (int) itemName.length() );
|
||||
}
|
||||
|
||||
wxString functionName = *node->leaf[1]->leaf[0]->value.str;
|
||||
|
@ -967,7 +970,8 @@ bool COMPILER::generateUCode( UCODE* aCode, CONTEXT* aPreflightContext )
|
|||
if( !vref )
|
||||
{
|
||||
msg.Printf( _( "Unrecognized item '%s'" ), itemName );
|
||||
reportError( CST_CODEGEN, msg, node->leaf[0]->srcPos - (int) itemName.length() );
|
||||
reportError( CST_CODEGEN, msg,
|
||||
node->leaf[0]->srcPos - (int) itemName.length() );
|
||||
}
|
||||
|
||||
msg.Printf( _( "Unrecognized property '%s'" ), propName );
|
||||
|
@ -980,6 +984,7 @@ bool COMPILER::generateUCode( UCODE* aCode, CONTEXT* aPreflightContext )
|
|||
node->isTerminal = true;
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Copyright (C) 2020-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -586,7 +586,10 @@ bool EESCHEMA_SETTINGS::MigrateFromLegacy( wxConfigBase* aCfg )
|
|||
ret &= fromLegacy<bool>( aCfg, "RescueNeverShow", "system.never_show_rescue_dialog" );
|
||||
|
||||
// Legacy version stored this setting in eeschema, so move it to common if it exists
|
||||
aCfg->Read( "MoveWarpsCursor", &Pgm().GetCommonSettings()->m_Input.warp_mouse_on_move );
|
||||
bool tmp;
|
||||
|
||||
if( aCfg->Read( "MoveWarpsCursor", &tmp ) )
|
||||
Pgm().GetCommonSettings()->m_Input.warp_mouse_on_move = tmp;
|
||||
|
||||
COLOR_SETTINGS* cs = Pgm().GetSettingsManager().GetMigratedColorSettings();
|
||||
|
||||
|
|
|
@ -32,7 +32,9 @@ const int spiceSettingsSchemaVersion = 0;
|
|||
|
||||
SPICE_SIMULATOR_SETTINGS::SPICE_SIMULATOR_SETTINGS( JSON_SETTINGS* aParent,
|
||||
const std::string& aPath ) :
|
||||
NESTED_SETTINGS( "simulator", spiceSettingsSchemaVersion, aParent, aPath )
|
||||
NESTED_SETTINGS( "simulator", spiceSettingsSchemaVersion, aParent, aPath ),
|
||||
m_fixPassiveVals( false ),
|
||||
m_fixIncludePaths( true )
|
||||
{
|
||||
m_params.emplace_back( new PARAM<wxString>( "workbook_filename", &m_workbookFilename, "" ) );
|
||||
m_params.emplace_back( new PARAM<bool>( "fix_passive_vals", &m_fixPassiveVals, false ) );
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
* KiRouter - a push-and-(sometimes-)shove PCB router
|
||||
*
|
||||
* Copyright (C) 2013-2020 CERN
|
||||
* Copyright (C) 2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Author: Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
|
@ -46,6 +47,8 @@ COMPONENT_DRAGGER::~COMPONENT_DRAGGER()
|
|||
|
||||
bool COMPONENT_DRAGGER::Start( const VECTOR2I& aP, ITEM_SET& aPrimitives )
|
||||
{
|
||||
assert( m_world );
|
||||
|
||||
m_currentNode = nullptr;
|
||||
m_initialDraggedItems = aPrimitives;
|
||||
m_p0 = aP;
|
||||
|
@ -148,8 +151,11 @@ bool COMPONENT_DRAGGER::Start( const VECTOR2I& aP, ITEM_SET& aPrimitives )
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool COMPONENT_DRAGGER::Drag( const VECTOR2I& aP )
|
||||
{
|
||||
assert( m_world );
|
||||
|
||||
m_world->KillChildren();
|
||||
m_currentNode = m_world->Branch();
|
||||
|
||||
|
@ -234,6 +240,7 @@ bool COMPONENT_DRAGGER::Drag( const VECTOR2I& aP )
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool COMPONENT_DRAGGER::FixRoute()
|
||||
{
|
||||
NODE* node = CurrentNode();
|
||||
|
@ -257,11 +264,13 @@ bool COMPONENT_DRAGGER::FixRoute()
|
|||
return false;
|
||||
}
|
||||
|
||||
|
||||
NODE* COMPONENT_DRAGGER::CurrentNode() const
|
||||
{
|
||||
return m_currentNode ? m_currentNode : m_world;
|
||||
}
|
||||
|
||||
|
||||
const ITEM_SET COMPONENT_DRAGGER::Traces()
|
||||
{
|
||||
return m_draggedItems;
|
||||
|
|
|
@ -585,11 +585,12 @@ bool LINE_PLACER::rhWalkOnly( const VECTOR2I& aP, LINE& aNewHead )
|
|||
{
|
||||
bool valid_cw = false, valid_ccw = false;
|
||||
VECTOR2I p_cw, p_ccw;
|
||||
int dist_ccw, dist_cw;
|
||||
int dist_ccw = 0, dist_cw = 0;
|
||||
|
||||
if( wr.statusCcw == WALKAROUND::ALMOST_DONE )
|
||||
{
|
||||
valid_ccw = cursorDistMinimum( l_ccw, aP, hugThresholdLength, dist_ccw, p_ccw );
|
||||
|
||||
if( valid_ccw )
|
||||
{
|
||||
int idx_ccw = l_ccw.Split( p_ccw );
|
||||
|
@ -598,9 +599,11 @@ bool LINE_PLACER::rhWalkOnly( const VECTOR2I& aP, LINE& aNewHead )
|
|||
PNS_DBG( Dbg(), AddLine, l_ccw, MAGENTA, 200000, "wh-result-ccw" );
|
||||
}
|
||||
}
|
||||
|
||||
if( wr.statusCw == WALKAROUND::ALMOST_DONE )
|
||||
{
|
||||
valid_cw = cursorDistMinimum( l_cw, aP, hugThresholdLength, dist_cw, p_cw );
|
||||
|
||||
if( valid_cw )
|
||||
{
|
||||
int idx_cw = l_cw.Split( p_cw );
|
||||
|
@ -661,7 +664,6 @@ bool LINE_PLACER::rhWalkOnly( const VECTOR2I& aP, LINE& aNewHead )
|
|||
|
||||
OPTIMIZER::Optimize( &walkFull, effort, m_currentNode );
|
||||
|
||||
|
||||
if( m_currentNode->CheckColliding( &walkFull ) )
|
||||
{
|
||||
return false;
|
||||
|
|
|
@ -54,9 +54,9 @@ NODE::NODE()
|
|||
{
|
||||
m_depth = 0;
|
||||
m_root = this;
|
||||
m_parent = NULL;
|
||||
m_parent = nullptr;
|
||||
m_maxClearance = 800000; // fixme: depends on how thick traces are.
|
||||
m_ruleResolver = NULL;
|
||||
m_ruleResolver = nullptr;
|
||||
m_index = new INDEX;
|
||||
|
||||
#ifdef DEBUG
|
||||
|
@ -97,6 +97,7 @@ NODE::~NODE()
|
|||
delete m_index;
|
||||
}
|
||||
|
||||
|
||||
int NODE::GetClearance( const ITEM* aA, const ITEM* aB ) const
|
||||
{
|
||||
if( !m_ruleResolver )
|
||||
|
@ -107,12 +108,12 @@ int NODE::GetClearance( const ITEM* aA, const ITEM* aB ) const
|
|||
|
||||
|
||||
int NODE::GetHoleClearance( const ITEM* aA, const ITEM* aB ) const
|
||||
{
|
||||
if( !m_ruleResolver )
|
||||
return 0;
|
||||
{
|
||||
if( !m_ruleResolver )
|
||||
return 0;
|
||||
|
||||
return m_ruleResolver->HoleClearance( aA, aB );
|
||||
}
|
||||
return m_ruleResolver->HoleClearance( aA, aB );
|
||||
}
|
||||
|
||||
|
||||
int NODE::GetHoleToHoleClearance( const ITEM* aA, const ITEM* aB ) const
|
||||
|
@ -171,8 +172,8 @@ void NODE::unlinkParent()
|
|||
|
||||
OBSTACLE_VISITOR::OBSTACLE_VISITOR( const ITEM* aItem ) :
|
||||
m_item( aItem ),
|
||||
m_node( NULL ),
|
||||
m_override( NULL )
|
||||
m_node( nullptr ),
|
||||
m_override( nullptr )
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -240,6 +241,7 @@ struct NODE::DEFAULT_OBSTACLE_VISITOR : public OBSTACLE_VISITOR
|
|||
|
||||
obs.m_item = aCandidate;
|
||||
obs.m_head = m_item;
|
||||
obs.m_distFirst = INT_MAX;
|
||||
m_tab.push_back( obs );
|
||||
|
||||
m_matchCount++;
|
||||
|
@ -262,7 +264,7 @@ int NODE::QueryColliding( const ITEM* aItem, NODE::OBSTACLES& aObstacles, int aK
|
|||
#endif
|
||||
|
||||
visitor.SetCountLimit( aLimitCount );
|
||||
visitor.SetWorld( this, NULL );
|
||||
visitor.SetWorld( this, nullptr );
|
||||
|
||||
// first, look for colliding items in the local index
|
||||
m_index->Query( aItem, m_maxClearance, visitor );
|
||||
|
@ -297,11 +299,12 @@ NODE::OPT_OBSTACLE NODE::NearestObstacle( const LINE* aLine, int aKindMask,
|
|||
return OPT_OBSTACLE();
|
||||
|
||||
OBSTACLE nearest;
|
||||
nearest.m_item = NULL;
|
||||
nearest.m_item = nullptr;
|
||||
nearest.m_distFirst = INT_MAX;
|
||||
|
||||
auto updateNearest =
|
||||
[&]( const SHAPE_LINE_CHAIN::INTERSECTION& pt, ITEM* obstacle, const SHAPE_LINE_CHAIN& hull, bool isHole )
|
||||
[&]( const SHAPE_LINE_CHAIN::INTERSECTION& pt, ITEM* obstacle,
|
||||
const SHAPE_LINE_CHAIN& hull, bool isHole )
|
||||
{
|
||||
int dist = aLine->CLine().PathLength( pt.p, pt.index_their );
|
||||
|
||||
|
@ -347,6 +350,7 @@ NODE::OPT_OBSTACLE NODE::NearestObstacle( const LINE* aLine, int aKindMask,
|
|||
{
|
||||
const VIA& via = aLine->Via();
|
||||
// Don't use via.Drill(); it doesn't include the plating thickness
|
||||
|
||||
int viaHoleRadius = static_cast<const SHAPE_CIRCLE*>( via.Hole() )->GetRadius();
|
||||
|
||||
int viaClearance = GetClearance( obstacle.m_item, &via ) + via.Diameter() / 2;
|
||||
|
@ -361,7 +365,7 @@ NODE::OPT_OBSTACLE NODE::NearestObstacle( const LINE* aLine, int aKindMask,
|
|||
intersectingPts.clear();
|
||||
HullIntersection( obstacleHull, aLine->CLine(), intersectingPts );
|
||||
|
||||
// obstacleHull.Intersect( aLine->CLine(), intersectingPts, true );
|
||||
// obstacleHull.Intersect( aLine->CLine(), intersectingPts, true );
|
||||
|
||||
for( const SHAPE_LINE_CHAIN::INTERSECTION& ip : intersectingPts )
|
||||
updateNearest( ip, obstacle.m_item, obstacleHull, false );
|
||||
|
@ -474,7 +478,7 @@ struct HIT_VISITOR : public OBSTACLE_VISITOR
|
|||
const VECTOR2I& m_point;
|
||||
|
||||
HIT_VISITOR( ITEM_SET& aTab, const VECTOR2I& aPoint ) :
|
||||
OBSTACLE_VISITOR( NULL ),
|
||||
OBSTACLE_VISITOR( nullptr ),
|
||||
m_items( aTab ),
|
||||
m_point( aPoint )
|
||||
{}
|
||||
|
@ -504,14 +508,14 @@ const ITEM_SET NODE::HitTest( const VECTOR2I& aPoint ) const
|
|||
// fixme: we treat a point as an infinitely small circle - this is inefficient.
|
||||
SHAPE_CIRCLE s( aPoint, 0 );
|
||||
HIT_VISITOR visitor( items, aPoint );
|
||||
visitor.SetWorld( this, NULL );
|
||||
visitor.SetWorld( this, nullptr );
|
||||
|
||||
m_index->Query( &s, m_maxClearance, visitor );
|
||||
|
||||
if( !isRoot() ) // fixme: could be made cleaner
|
||||
{
|
||||
ITEM_SET items_root;
|
||||
visitor.SetWorld( m_root, NULL );
|
||||
visitor.SetWorld( m_root, nullptr );
|
||||
HIT_VISITOR visitor_root( items_root, aPoint );
|
||||
m_root->m_index->Query( &s, m_maxClearance, visitor_root );
|
||||
|
||||
|
@ -687,7 +691,7 @@ void NODE::doRemove( ITEM* aItem )
|
|||
// the item belongs to this particular branch: un-reference it
|
||||
if( aItem->BelongsTo( this ) )
|
||||
{
|
||||
aItem->SetOwner( NULL );
|
||||
aItem->SetOwner( nullptr );
|
||||
m_root->m_garbageItems.insert( aItem );
|
||||
}
|
||||
}
|
||||
|
@ -899,7 +903,7 @@ void NODE::followLine( LINKED_ITEM* aCurrent, bool aScanDirection, int& aPos, in
|
|||
if( count && guard == p )
|
||||
{
|
||||
if( aPos >= 0 && aPos < aLimit )
|
||||
aSegments[aPos] = NULL;
|
||||
aSegments[aPos] = nullptr;
|
||||
|
||||
aGuardHit = true;
|
||||
break;
|
||||
|
@ -948,7 +952,7 @@ const LINE NODE::AssembleLine( LINKED_ITEM* aSeg, int* aOriginSegmentIndex,
|
|||
|
||||
int n = 0;
|
||||
|
||||
LINKED_ITEM* prev_seg = NULL;
|
||||
LINKED_ITEM* prev_seg = nullptr;
|
||||
bool originSet = false;
|
||||
|
||||
SHAPE_LINE_CHAIN& line = pl.Line();
|
||||
|
@ -1068,9 +1072,13 @@ void NODE::FixupVirtualVias()
|
|||
for( const auto& lnk : joint.second.LinkList() )
|
||||
{
|
||||
if( lnk.item->OfKind( ITEM::VIA_T ) )
|
||||
{
|
||||
n_vias++;
|
||||
}
|
||||
else if( lnk.item->OfKind( ITEM::SOLID_T ) )
|
||||
{
|
||||
n_solid++;
|
||||
}
|
||||
else if( const auto t = dyn_cast<PNS::SEGMENT*>( lnk.item ) )
|
||||
{
|
||||
int w = t->Width();
|
||||
|
@ -1117,7 +1125,7 @@ JOINT* NODE::FindJoint( const VECTOR2I& aPos, int aLayer, int aNet )
|
|||
}
|
||||
|
||||
if( f == end )
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
while( f != end )
|
||||
{
|
||||
|
@ -1127,7 +1135,7 @@ JOINT* NODE::FindJoint( const VECTOR2I& aPos, int aLayer, int aNet )
|
|||
++f;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1372,7 +1380,7 @@ void NODE::KillChildren()
|
|||
}
|
||||
|
||||
|
||||
void NODE::AllItemsInNet( int aNet, std::set<ITEM*>& aItems, int aKindMask)
|
||||
void NODE::AllItemsInNet( int aNet, std::set<ITEM*>& aItems, int aKindMask )
|
||||
{
|
||||
INDEX::NET_ITEMS_LIST* l_cur = m_index->GetItemsForNet( aNet );
|
||||
|
||||
|
@ -1552,7 +1560,7 @@ ITEM *NODE::FindItemByParent( const BOARD_ITEM* aParent )
|
|||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue