Clean up file format error message a bit more

If a FUTURE_FORMAT_ERROR wraps another FUTURE_FORMAT_ERROR, only print
the error for it once.
This commit is contained in:
Chris Pavlina 2017-01-27 07:27:53 -05:00
parent 3ffc17c27b
commit 498e8b122a
1 changed files with 18 additions and 8 deletions

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2007-2016 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2016 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2017 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@ -89,6 +89,15 @@ void PARSE_ERROR::init( const wxString& aProblem, const char* aThrowersFile,
FUTURE_FORMAT_ERROR::FUTURE_FORMAT_ERROR( const PARSE_ERROR& aParseError, const wxString& aRequiredVersion ) :
PARSE_ERROR(), requiredVersion( aRequiredVersion )
{
// Avoid double-printing the error message
bool wrapped_same_type = !!( dynamic_cast<const FUTURE_FORMAT_ERROR *>( &aParseError ) );
if( wrapped_same_type )
{
problem = aParseError.Problem();
}
else
{
problem.Printf( _(
"KiCad was unable to open this file, as it was created with a more "
@ -97,6 +106,7 @@ FUTURE_FORMAT_ERROR::FUTURE_FORMAT_ERROR( const PARSE_ERROR& aParseError, const
"Date of KiCad version required (or newer): %s\n\n"
"Full error text:\n%s" ),
requiredVersion, aParseError.Problem() );
}
lineNumber = aParseError.lineNumber;
byteIndex = aParseError.byteIndex;