+#if wxDEBUG_LEVEL
+
+static wxString FormatAssertMessage(const wxString& file,
+ int line,
+ const wxString& func,
+ const wxString& cond,
+ const wxString& msg)
+{
+ wxString str;
+ str << "wxWidgets assert: " << cond << " failed "
+ "at " << file << ":" << line << " in " << func
+ << " with message '" << msg << "'";
+ return str;
+}
+
+static void TestAssertHandler(const wxString& file,
+ int line,
+ const wxString& func,
+ const wxString& cond,
+ const wxString& msg)
+{
+ // can't throw from other threads, die immediately
+ if ( !wxIsMainThread() )
+ {
+ wxPrintf("%s in a worker thread -- aborting.",
+ FormatAssertMessage(file, line, func, cond, msg));
+ fflush(stdout);
+ _exit(-1);
+ }
+
+ throw TestAssertFailure(file, line, func, cond, msg);
+}
+
+#endif // wxDEBUG_LEVEL
+