Browse Source

EasyEDA Pro import: make sure to use UTF-8 for project.json and device.json.

Also catch exceptions.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17248
newinvert
Alex Shvartzkop 2 years ago
parent
commit
219d0c399d
  1. 26
      common/io/easyedapro/easyedapro_import_utils.cpp

26
common/io/easyedapro/easyedapro_import_utils.cpp

@ -150,14 +150,28 @@ nlohmann::json EASYEDAPRO::ReadProjectOrDeviceFile( const wxString& aZipFileName
{
wxString name = entry->GetName();
if( name == wxS( "project.json" ) || name == wxS( "device.json" ) )
try
{
wxMemoryOutputStream memos;
memos << zip;
wxStreamBuffer* buf = memos.GetOutputStreamBuffer();
wxString str( (char*) buf->GetBufferStart(), buf->GetBufferSize() );
if( name == wxS( "project.json" ) || name == wxS( "device.json" ) )
{
wxMemoryOutputStream memos;
memos << zip;
wxStreamBuffer* buf = memos.GetOutputStreamBuffer();
wxString str =
wxString::FromUTF8( (char*) buf->GetBufferStart(), buf->GetBufferSize() );
return nlohmann::json::parse( str );
return nlohmann::json::parse( str );
}
}
catch( nlohmann::json::exception& e )
{
THROW_IO_ERROR(
wxString::Format( _( "JSON error reading '%s': %s" ), name, e.what() ) );
}
catch( std::exception& e )
{
THROW_IO_ERROR( wxString::Format( _( "Error reading '%s': %s" ), name, e.what() ) );
}
}

Loading…
Cancel
Save