diff --git a/include/utf8.h b/include/utf8.h index 4f5bf6d856..7f60173083 100644 --- a/include/utf8.h +++ b/include/utf8.h @@ -65,7 +65,7 @@ public: /// For use with _() function on wx 2.8: UTF8( const wchar_t* txt ); - explicit UTF8( const std::string& o ) : + UTF8( const std::string& o ) : std::string( o ) { } diff --git a/pcbnew/eagle_plugin.cpp b/pcbnew/eagle_plugin.cpp index 703bb57ddd..ef4f1e42a9 100644 --- a/pcbnew/eagle_plugin.cpp +++ b/pcbnew/eagle_plugin.cpp @@ -93,9 +93,6 @@ typedef boost::optional opt_double; typedef boost::optional opt_bool; -const wxChar* traceEaglePlugin = wxT( "KicadEaglePlugin" ); - - /// segment (element) of our XPATH into the Eagle XML document tree in PTREE form. struct TRIPLET { @@ -2741,6 +2738,18 @@ wxDateTime EAGLE_PLUGIN::getModificationTime( const wxString& aPath ) { wxFileName fn( aPath ); + // Do not call wxFileName::GetModificationTime() on a non-existent file, because + // if it fails, wx's implementation calls the crap wxLogSysError() which + // eventually infects our UI with an unwanted popup window, so don't let it fail. + if( !fn.IsFileReadable() ) + { + wxString msg = wxString::Format( + _( "File '%s' is not readable." ), + GetChars( aPath ) ); + + THROW_IO_ERROR( msg ); + } + /* // update the writable flag while we have a wxFileName, in a network this // is possibly quite dynamic anyway. @@ -2770,8 +2779,6 @@ void EAGLE_PLUGIN::cacheLib( const wxString& aLibPath ) if( aLibPath != m_lib_path || load ) { - wxLogTrace( traceEaglePlugin, wxT( "Loading '%s'" ), TO_UTF8( aLibPath ) ); - PTREE doc; LOCALE_IO toggle; // toggles on, then off, the C locale.