Wrap FILE_LINE_READER in try-catch blocks in PCB plugins for CanRead*.

This commit is contained in:
Alex Shvartzkop 2023-08-29 19:13:55 +03:00
parent d161602e92
commit af62e4276b
2 changed files with 32 additions and 18 deletions

View File

@ -274,11 +274,19 @@ bool PCB_PLUGIN::CanReadBoard( const wxString& aFileName ) const
if( !PLUGIN::CanReadBoard( aFileName ) )
return false;
FILE_LINE_READER reader( aFileName );
try
{
FILE_LINE_READER reader( aFileName );
PCB_PARSER parser( &reader, nullptr, m_queryUserCallback );
PCB_PARSER parser( &reader, nullptr, m_queryUserCallback );
return parser.IsValidBoardHeader();
}
catch( const IO_ERROR& )
{
return false;
}
return parser.IsValidBoardHeader();
return false;
}

View File

@ -415,10 +415,9 @@ bool LEGACY_PLUGIN::CanReadBoard( const wxString& aFileName ) const
if( !PLUGIN::CanReadBoard( aFileName ) )
return false;
FILE_LINE_READER tempReader( aFileName );
try
{
FILE_LINE_READER tempReader( aFileName );
getVersion( &tempReader );
}
catch( const IO_ERROR& )
@ -435,25 +434,32 @@ bool LEGACY_PLUGIN::CanReadFootprint( const wxString& aFileName ) const
if( !PLUGIN::CanReadFootprint( aFileName ) )
return false;
FILE_LINE_READER freader( aFileName );
WHITESPACE_FILTER_READER reader( freader );
reader.ReadLine();
char* line = reader.Line();
if( !line )
return false;
if( !strncasecmp( line, FOOTPRINT_LIBRARY_HEADER, FOOTPRINT_LIBRARY_HEADER_CNT ) )
try
{
while( reader.ReadLine() )
FILE_LINE_READER freader( aFileName );
WHITESPACE_FILTER_READER reader( freader );
reader.ReadLine();
char* line = reader.Line();
if( !line )
return false;
if( !strncasecmp( line, FOOTPRINT_LIBRARY_HEADER, FOOTPRINT_LIBRARY_HEADER_CNT ) )
{
if( !strncasecmp( line, "$MODULE", strlen( "$MODULE" ) ) )
while( reader.ReadLine() )
{
return true;
if( !strncasecmp( line, "$MODULE", strlen( "$MODULE" ) ) )
{
return true;
}
}
}
}
catch( const IO_ERROR& )
{
return false;
}
return false;
}