Added wxAbort() which can also be used under Windows CE.

Windows CE doesn't have abort() so provide a wrapper which can be used even
there (see #13847).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70311 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2012-01-10 17:01:13 +00:00
parent 864c08b2ed
commit 975dc6910e
4 changed files with 28 additions and 5 deletions

View File

@@ -299,6 +299,13 @@ extern void WXDLLIMPEXP_BASE wxOnAssert(const char *file,
#define wxASSERT_LEVEL_2(cond) #define wxASSERT_LEVEL_2(cond)
#endif #endif
// This is simply a wrapper for the standard abort() which is not available
// under all platforms.
//
// It isn't really debug-related but there doesn't seem to be any better place
// for it, so declare it here and define it in appbase.cpp, together with
// wxTrap().
extern void WXDLLIMPEXP_BASE wxAbort();
/* /*
wxCHECK macros always check their conditions, setting debug level to 0 only wxCHECK macros always check their conditions, setting debug level to 0 only

View File

@@ -9,6 +9,17 @@
/** @addtogroup group_funcmacro_debug */ /** @addtogroup group_funcmacro_debug */
//@{ //@{
/**
Exits the program immediately.
This is a simple wrapper for the standard abort() function which is not
available under all platforms (currently only Windows CE doesn't provide
it).
@since 2.9.4
*/
void wxAbort();
/** /**
@def wxDEBUG_LEVEL @def wxDEBUG_LEVEL

View File

@@ -1006,6 +1006,15 @@ bool wxAssertIsEqual(int x, int y)
return x == y; return x == y;
} }
void wxAbort()
{
#ifdef __WXWINCE__
ExitThread(3);
#else
abort();
#endif
}
#if wxDEBUG_LEVEL #if wxDEBUG_LEVEL
// break into the debugger // break into the debugger

View File

@@ -355,11 +355,7 @@ wxLog::OnLog(wxLogLevel level,
{ {
wxSafeShowMessage(wxS("Fatal Error"), msg); wxSafeShowMessage(wxS("Fatal Error"), msg);
#ifdef __WXWINCE__ wxAbort();
ExitThread(3);
#else
abort();
#endif
} }
wxLog *logger; wxLog *logger;