diff options
Diffstat (limited to 'src/util/exception.cpp')
-rw-r--r-- | src/util/exception.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/util/exception.cpp b/src/util/exception.cpp index 95d307744..92f5c1840 100644 --- a/src/util/exception.cpp +++ b/src/util/exception.cpp @@ -19,6 +19,7 @@ #include <cstdio> #include <cstdlib> #include <cstdarg> +#include "util/cvc4_assert.h" using namespace std; using namespace CVC4; @@ -63,7 +64,14 @@ void IllegalArgumentException::construct(const char* header, const char* extra, setMessage(string(buf)); +#ifdef CVC4_DEBUG + if(s_debugLastException == NULL) { + // we leak buf[] but only in debug mode with assertions failing + s_debugLastException = buf; + } +#else /* CVC4_DEBUG */ delete [] buf; +#endif /* CVC4_DEBUG */ } void IllegalArgumentException::construct(const char* header, const char* extra, @@ -96,5 +104,12 @@ void IllegalArgumentException::construct(const char* header, const char* extra, setMessage(string(buf)); +#ifdef CVC4_DEBUG + if(s_debugLastException == NULL) { + // we leak buf[] but only in debug mode with assertions failing + s_debugLastException = buf; + } +#else /* CVC4_DEBUG */ delete [] buf; +#endif /* CVC4_DEBUG */ } |