X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2Flassert.cpp;h=fa2ffb063c8ee5446558729d7d7e37fdac348495;hb=8d640dc77608bedddb5b00982c23665584f52d21;hp=281330e52c74ab6bdcd8fedfbc901220b9c3275c;hpb=2f17858115247a1f2b9e341e7cbe96148911c1ad;p=lyx.git diff --git a/src/support/lassert.cpp b/src/support/lassert.cpp index 281330e52c..fa2ffb063c 100644 --- a/src/support/lassert.cpp +++ b/src/support/lassert.cpp @@ -10,6 +10,7 @@ */ #include +#include #include "support/convert.h" #include "support/debug.h" @@ -35,13 +36,21 @@ namespace lyx { using namespace std; using namespace support; -// TODO Should we try to print the call stack in the course of these? + +void doAssertWithCallstack(bool value) +{ + if (!value) { + printCallStack(); + BOOST_ASSERT(false); + } +} + void doAssert(char const * expr, char const * file, long line) { LYXERR0("ASSERTION " << expr << " VIOLATED IN " << file << ":" << line); // comment this out if not needed - BOOST_ASSERT(false); + doAssertWithCallstack(false); } @@ -60,7 +69,7 @@ void doWarnIf(char const * expr, char const * file, long line) { docstring const d = _("It should be safe to continue, but you\nmay wish to save your work and restart LyX."); // comment this out if not needed - BOOST_ASSERT(false); + doAssertWithCallstack(false); throw ExceptionMessage(WarningException, _("Warning!"), formatHelper(d, expr, file, line)); } @@ -70,7 +79,7 @@ void doBufErr(char const * expr, char const * file, long line) { docstring const d = _("There has been an error with this document.\nLyX will attempt to close it safely."); // comment this out if not needed - BOOST_ASSERT(false); + doAssertWithCallstack(false); throw ExceptionMessage(BufferException, _("Buffer Error!"), formatHelper(d, expr, file, line)); } @@ -80,7 +89,7 @@ void doAppErr(char const * expr, char const * file, long line) { docstring const d = _("LyX has encountered an application error\nand will now shut down."); // comment this out if not needed - BOOST_ASSERT(false); + doAssertWithCallstack(false); throw ExceptionMessage(ErrorException, _("Fatal Exception!"), formatHelper(d, expr, file, line)); }