X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b51014176a539bf0c0e5058910c5a7fcc7a7d0a5..95316a3f245a4baf3046e97222660bed986153ed:/src/common/appbase.cpp diff --git a/src/common/appbase.cpp b/src/common/appbase.cpp index 6f2caafc55..5014ca25df 100644 --- a/src/common/appbase.cpp +++ b/src/common/appbase.cpp @@ -1019,6 +1019,8 @@ void wxAbort() #if wxDEBUG_LEVEL // break into the debugger +#ifndef wxTrap + void wxTrap() { #if defined(__WINDOWS__) && !defined(__WXMICROWIN__) @@ -1032,6 +1034,8 @@ void wxTrap() #endif // Win/Unix } +#endif // wxTrap already defined as a macro + // default assert handler static void wxDefaultAssertHandler(const wxString& file, @@ -1181,6 +1185,8 @@ static void LINKAGEMODE SetTraceMasks() #if wxDEBUG_LEVEL +bool wxTrapInAssert = false; + static bool DoShowAssertDialog(const wxString& msg) { @@ -1199,7 +1205,14 @@ bool DoShowAssertDialog(const wxString& msg) MB_YESNOCANCEL | MB_ICONSTOP ) ) { case IDYES: - wxTrap(); + // If we called wxTrap() directly from here, the programmer would + // see this function and a few more calls between his own code and + // it in the stack trace which would be perfectly useless and often + // confusing. So instead just set the flag here and let the macros + // defined in wx/debug.h call wxTrap() themselves, this ensures + // that the debugger will show the line in the user code containing + // the failing assert. + wxTrapInAssert = true; break; case IDCANCEL: