diff --git a/eeschema/dialogs/dialog_fields_editor_global.cpp b/eeschema/dialogs/dialog_fields_editor_global.cpp index 6ffb048e82..a985281a37 100644 --- a/eeschema/dialogs/dialog_fields_editor_global.cpp +++ b/eeschema/dialogs/dialog_fields_editor_global.cpp @@ -353,12 +353,15 @@ public: std::map& fieldStore = m_dataStore[ comp->GetTimeStamp() ]; - for( int j = 0; j < comp->GetFieldCount(); ++j ) + for( std::pair fieldData : fieldStore ) { - SCH_FIELD* field = comp->GetField( j ); - auto fieldStoreData = fieldStore.find( field->GetName() ); - if( fieldStoreData != fieldStore.end() ) - field->SetText( fieldStoreData->second ); + wxString fieldName = fieldData.first; + SCH_FIELD* field = comp->FindField( fieldName ); + + if( !field ) + field = comp->AddField( SCH_FIELD( wxPoint( 0, 0 ), -1, comp, fieldName ) ); + + field->SetText( fieldData.second ); } } }