Eeschema: fix netlist creation crash when opening spice simulator.

This commit is contained in:
Wayne Stambaugh 2020-05-05 18:35:27 -04:00
parent 590a101a88
commit aa9e74493f
3 changed files with 53 additions and 47 deletions

View File

@ -352,6 +352,8 @@ public:
*/
LIB_ITEM* GetNextDrawItem( LIB_ITEM* aItem = NULL, KICAD_T aType = TYPE_NOT_INIT );
size_t GetPinCount() const { return m_drawings.size( LIB_PIN_T ); }
/**
* Return the next pin object from the draw list.
*

View File

@ -281,8 +281,9 @@ void SCH_COMPONENT::UpdatePins()
m_pins.clear();
m_pinMap.clear();
if( m_part )
{
if( !m_part )
return;
unsigned i = 0;
for( LIB_PIN* libPin = m_part->GetNextPin(); libPin; libPin = m_part->GetNextPin( libPin ) )
@ -298,7 +299,6 @@ void SCH_COMPONENT::UpdatePins()
++i;
}
}
}
SCH_CONNECTION* SCH_COMPONENT::GetConnectionForPin( LIB_PIN* aPin, const SCH_SHEET_PATH& aSheet )
@ -1500,8 +1500,13 @@ SEARCH_RESULT SCH_COMPONENT::Visit( INSPECTOR aInspector, void* aTestData,
void SCH_COMPONENT::GetNetListItem( NETLIST_OBJECT_LIST& aNetListItems,
SCH_SHEET_PATH* aSheetPath )
{
if( m_part )
{
if( !m_part )
return;
// This should not happen but just in case the pin map size doesn't match the number of
// pins in the symbol, update the pin map.
wxCHECK2( m_part->GetPinCount() == m_pins.size(), UpdatePins() );
for( LIB_PIN* pin = m_part->GetNextPin(); pin; pin = m_part->GetNextPin( pin ) )
{
wxASSERT( pin->Type() == LIB_PIN_T );
@ -1543,7 +1548,6 @@ void SCH_COMPONENT::GetNetListItem( NETLIST_OBJECT_LIST& aNetListItems,
}
}
}
}
bool SCH_COMPONENT::operator <( const SCH_ITEM& aItem ) const

View File

@ -617,8 +617,8 @@ void SCH_SCREEN::UpdateSymbolLinks( REPORTER* aReporter )
aReporter->ReportTail( msg, RPT_SEVERITY_INFO );
}
// Internal library symbols are flattens so just make a copy.
symbol->GetPartRef().reset( new LIB_PART( *it->second ) );
// Internal library symbols are already flattened so just make a copy.
symbol->SetLibSymbol( new LIB_PART( *it->second ) );
continue;
}