assert: use xmessage to block on assert failed

This commit is contained in:
Maxime Coste 2012-10-16 16:16:32 +02:00
parent 214baf4cdd
commit f8abbfbb44
2 changed files with 15 additions and 1 deletions

View File

@ -13,4 +13,16 @@ String assert_failed::description() const
return m_message;
}
void on_assert_failed(const String& message)
{
int res = system(("xmessage -buttons 'quit:0,ignore:1' '" + message + "'").c_str());
switch (res)
{
case 0:
throw assert_failed(message);
case 1:
return;
}
}
}

View File

@ -15,6 +15,8 @@ private:
String m_message;
};
void on_assert_failed(const String& message);
}
#define STRINGIFY(X) #X
@ -27,6 +29,6 @@ private:
#define assert(condition) \
if (not (condition)) \
throw assert_failed("assert failed \"" #condition "\" at " __FILE__ ":" TOSTRING(__LINE__))
on_assert_failed("assert failed \"" #condition "\" at " __FILE__ ":" TOSTRING(__LINE__))
#endif // assert_hh_INCLUDED