]> git.saurik.com Git - wxWidgets.git/commitdiff
Added wxAbort() which can also be used under Windows CE.
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 10 Jan 2012 17:01:13 +0000 (17:01 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 10 Jan 2012 17:01:13 +0000 (17:01 +0000)
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

include/wx/debug.h
interface/wx/debug.h
src/common/appbase.cpp
src/common/log.cpp

index 2ee3f6dbb0b1997e1bba6228d72ee15ccd8ffcfc..7529d847c4f68bc3211bf631ac38987a0331e326 100644 (file)
@@ -299,6 +299,13 @@ extern void WXDLLIMPEXP_BASE wxOnAssert(const char *file,
     #define wxASSERT_LEVEL_2(cond)
 #endif
 
     #define wxASSERT_LEVEL_2(cond)
 #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
index 16ea9e3ea6a835c0a76ab4af9e5f2cca7edb2766..2c03d20a45afd628c5edd5ad9a920bfadfeea63d 100644 (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
 
index 9ac78f57f6010213dc34169ec96703250464d4c9..4b21c7fcd2f9dfc5301cf4887c71948239410e6d 100644 (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
 
 // break into the debugger
 #if wxDEBUG_LEVEL
 
 // break into the debugger
index 7cc809d803653468d3edb89fdc12f390e36ca501..13ea6a0b9c21df02a62e9ef014c036963f0cc65f 100644 (file)
@@ -355,11 +355,7 @@ wxLog::OnLog(wxLogLevel level,
     {
         wxSafeShowMessage(wxS("Fatal Error"), msg);
 
     {
         wxSafeShowMessage(wxS("Fatal Error"), msg);
 
-#ifdef __WXWINCE__
-        ExitThread(3);
-#else
-        abort();
-#endif
+        wxAbort();
     }
 
     wxLog *logger;
     }
 
     wxLog *logger;