Don't invalidate itterator by adding markers inside loop.
Fixes https://gitlab.com/kicad/code/kicad/issues/6002
This commit is contained in:
parent
725082786e
commit
3100273db1
|
@ -606,6 +606,8 @@ int ERC_TESTER::TestLibSymbolIssues()
|
||||||
|
|
||||||
for( SCH_SCREEN* screen = screens.GetFirst(); screen != NULL; screen = screens.GetNext() )
|
for( SCH_SCREEN* screen = screens.GetFirst(); screen != NULL; screen = screens.GetNext() )
|
||||||
{
|
{
|
||||||
|
std::vector<SCH_MARKER*> markers;
|
||||||
|
|
||||||
for( SCH_ITEM* item : screen->Items().OfType( SCH_COMPONENT_T ) )
|
for( SCH_ITEM* item : screen->Items().OfType( SCH_COMPONENT_T ) )
|
||||||
{
|
{
|
||||||
SCH_COMPONENT* symbol = dynamic_cast<SCH_COMPONENT*>( item );
|
SCH_COMPONENT* symbol = dynamic_cast<SCH_COMPONENT*>( item );
|
||||||
|
@ -628,9 +630,7 @@ int ERC_TESTER::TestLibSymbolIssues()
|
||||||
symbol->GetLibId().GetUniStringLibId() );
|
symbol->GetLibId().GetUniStringLibId() );
|
||||||
ercItem->SetErrorMessage( msg );
|
ercItem->SetErrorMessage( msg );
|
||||||
|
|
||||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, symbol->GetPosition() );
|
markers.emplace_back( new SCH_MARKER( ercItem, symbol->GetPosition() ) );
|
||||||
screen->Append( marker );
|
|
||||||
err_count += 1;
|
|
||||||
}
|
}
|
||||||
else if( *libSymbol != *libSymbolInSchematic )
|
else if( *libSymbol != *libSymbolInSchematic )
|
||||||
{
|
{
|
||||||
|
@ -640,11 +640,15 @@ int ERC_TESTER::TestLibSymbolIssues()
|
||||||
symbol->GetLibId().GetUniStringLibId() );
|
symbol->GetLibId().GetUniStringLibId() );
|
||||||
ercItem->SetErrorMessage( msg );
|
ercItem->SetErrorMessage( msg );
|
||||||
|
|
||||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, symbol->GetPosition() );
|
markers.emplace_back( new SCH_MARKER( ercItem, symbol->GetPosition() ) );
|
||||||
screen->Append( marker );
|
|
||||||
err_count += 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for( SCH_MARKER* marker : markers )
|
||||||
|
{
|
||||||
|
screen->Append( marker );
|
||||||
|
err_count += 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return err_count;
|
return err_count;
|
||||||
|
|
Loading…
Reference in New Issue