From d0ddc909dc0c405785b25c106aa9f92116cb1301 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Mon, 19 Oct 2020 15:34:59 +0100 Subject: [PATCH] Handle hierarchical symbols when performing "lib symbol changed" check. Fixes https://gitlab.com/kicad/code/kicad/issues/6002 --- eeschema/erc.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/eeschema/erc.cpp b/eeschema/erc.cpp index 330534be32..ec03c81930 100644 --- a/eeschema/erc.cpp +++ b/eeschema/erc.cpp @@ -632,15 +632,20 @@ int ERC_TESTER::TestLibSymbolIssues() markers.emplace_back( new SCH_MARKER( ercItem, symbol->GetPosition() ) ); } - else if( *libSymbol != *libSymbolInSchematic ) + else { - std::shared_ptr ercItem = ERC_ITEM::Create( ERCE_LIB_SYMBOL_ISSUES ); - ercItem->SetItems( symbol ); - msg.Printf( "Library symbol \"%s\" has been modified", - symbol->GetLibId().GetUniStringLibId() ); - ercItem->SetErrorMessage( msg ); + std::unique_ptr flattenedSymbol = libSymbol->Flatten(); - markers.emplace_back( new SCH_MARKER( ercItem, symbol->GetPosition() ) ); + if( *flattenedSymbol != *libSymbolInSchematic ) + { + std::shared_ptr ercItem = ERC_ITEM::Create( ERCE_LIB_SYMBOL_ISSUES ); + ercItem->SetItems( symbol ); + msg.Printf( "Library symbol \"%s\" has been modified", + symbol->GetLibId().GetUniStringLibId() ); + ercItem->SetErrorMessage( msg ); + + markers.emplace_back( new SCH_MARKER( ercItem, symbol->GetPosition() ) ); + } } }