Fix build on gcc < 4.7
This commit is contained in:
parent
f040159f77
commit
6062b12160
2 changed files with 16 additions and 0 deletions
|
@ -340,6 +340,9 @@ struct InvalidPathError : EvalError
|
||||||
{
|
{
|
||||||
Path path;
|
Path path;
|
||||||
InvalidPathError(const Path & path);
|
InvalidPathError(const Path & path);
|
||||||
|
#ifdef EXCEPTION_NEEDS_THROW_SPEC
|
||||||
|
~InvalidPathError() throw () { };
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Realise all paths in `context' */
|
/* Realise all paths in `context' */
|
||||||
|
|
|
@ -8,6 +8,15 @@
|
||||||
|
|
||||||
#include <boost/format.hpp>
|
#include <boost/format.hpp>
|
||||||
|
|
||||||
|
/* Before 4.7, gcc's std::exception uses empty throw() specifiers for
|
||||||
|
* its (virtual) destructor and what() in c++11 mode, in violation of spec
|
||||||
|
*/
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7)
|
||||||
|
#define EXCEPTION_NEEDS_THROW_SPEC
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
namespace nix {
|
namespace nix {
|
||||||
|
|
||||||
|
@ -39,8 +48,12 @@ protected:
|
||||||
public:
|
public:
|
||||||
unsigned int status; // exit status
|
unsigned int status; // exit status
|
||||||
BaseError(const FormatOrString & fs, unsigned int status = 1);
|
BaseError(const FormatOrString & fs, unsigned int status = 1);
|
||||||
|
#ifdef EXCEPTION_NEEDS_THROW_SPEC
|
||||||
~BaseError() throw () { };
|
~BaseError() throw () { };
|
||||||
const char * what() const throw () { return err.c_str(); }
|
const char * what() const throw () { return err.c_str(); }
|
||||||
|
#else
|
||||||
|
const char * what() const noexcept { return err.c_str(); }
|
||||||
|
#endif
|
||||||
const string & msg() const { return err; }
|
const string & msg() const { return err; }
|
||||||
const string & prefix() const { return prefix_; }
|
const string & prefix() const { return prefix_; }
|
||||||
BaseError & addPrefix(const FormatOrString & fs);
|
BaseError & addPrefix(const FormatOrString & fs);
|
||||||
|
|
Loading…
Reference in a new issue