diff --git a/gerbview/gerber_file_image.cpp b/gerbview/gerber_file_image.cpp index ddc5b8f122..20a403c223 100644 --- a/gerbview/gerber_file_image.cpp +++ b/gerbview/gerber_file_image.cpp @@ -112,6 +112,20 @@ GERBER_FILE_IMAGE::~GERBER_FILE_IMAGE() } +void GERBER_FILE_IMAGE::AddMessageToList( const wxString& aMessage ) +{ + /* Add a message to the message list, but only if there are less than max_messages + * to avoid very long list (can happens if trying to read a non gerber file) + */ + const int max_messages = 50; // Arbitrary but reasonable value. + + if( m_messagesList.size() < max_messages ) + m_messagesList.Add( aMessage ); + else if( m_messagesList.size() == max_messages ) + m_messagesList.Add( _( "Too many messages, some are skipped" ) ); +} + + void GERBER_FILE_IMAGE::SetDrawOffetAndRotation( VECTOR2D aOffsetMM, EDA_ANGLE aRotation ) { m_DisplayOffset.x = KiROUND( aOffsetMM.x * gerbIUScale.IU_PER_MM ); diff --git a/gerbview/gerber_file_image.h b/gerbview/gerber_file_image.h index b130fa34aa..ab35cb4b7d 100644 --- a/gerbview/gerber_file_image.h +++ b/gerbview/gerber_file_image.h @@ -212,10 +212,7 @@ public: /** * Add a message to the message list */ - void AddMessageToList( const wxString& aMessage ) - { - m_messagesList.Add( aMessage ); - } + void AddMessageToList( const wxString& aMessage ); /** * Return the current coordinate type pointed to by XnnYnn Text (XnnnnYmmmm). diff --git a/gerbview/readgerb.cpp b/gerbview/readgerb.cpp index dc8c05026f..f44f2a0537 100644 --- a/gerbview/readgerb.cpp +++ b/gerbview/readgerb.cpp @@ -323,7 +323,7 @@ bool GERBER_FILE_IMAGE::LoadGerberFile( const wxString& aFullFileName ) break; default: - msg.Printf( wxT( "Unexpected char 0x%2.2X" ), *text ); + msg.Printf( wxT( "Unexpected char 0x%2.2X (%c)" ), *text, *text ); AddMessageToList( msg ); text++; break;