#endif
#if defined(__WXMAC__)
- // VZ: MacTypes.h is enough under Mac OS X (where I could test it) but
- // I don't know which headers are needed under earlier systems so
- // include everything when in doubt
#ifdef __DARWIN__
- #include "MacTypes.h"
+ #include <CoreServices/CoreServices.h>
#else
#include "wx/mac/private.h" // includes mac headers
#endif
#endif // wxUSE_STACKWALKER
#endif // __WXDEBUG__
+// wxABI_VERSION can be defined when compiling applications but it should be
+// left undefined when compiling the library itself, it is then set to its
+// default value in version.h
+#if wxABI_VERSION != wxMAJOR_VERSION * 10000 + wxMINOR_VERSION * 100 + 99
+#error "wxABI_VERSION should not be defined when compiling the library"
+#endif
+
// ----------------------------------------------------------------------------
// private functions prototypes
// ----------------------------------------------------------------------------
// initilization/cleanup
// ----------------------------------------------------------------------------
-bool wxAppConsole::Initialize(int& argc, wxChar **argv)
+bool wxAppConsole::Initialize(int& argcOrig, wxChar **argvOrig)
{
// remember the command line arguments
- this->argc = argc;
- this->argv = argv;
+ argc = argcOrig;
+ argv = argvOrig;
#ifndef __WXPALMOS__
if ( m_appName.empty() && argv )
delete wxConfigBase::Set((wxConfigBase *) NULL);
#endif // wxUSE_CONFIG
- // use Set(NULL) and not Get() to avoid creating a message output object on
- // demand when we just want to delete it
- delete wxMessageOutput::Set(NULL);
-
return 0;
}
wxEventFunction func,
wxEvent& event) const
{
- // by default, call wxApp::OnExceptionInMainLoop if an exception occurs
- try
- {
- handler->DoHandleEvent(func, event);
- }
- catch ( ... )
- {
- wxConstCast(this, wxAppConsole)->OnExceptionInMainLoop();
- }
-}
-
-bool
-wxAppConsole::OnExceptionInMainLoop()
-{
- throw;
-
- // some compilers are too stupid to know that we never return after throw
-#if defined(__DMC__) || (defined(_MSC_VER) && _MSC_VER < 1200)
- return false;
-#endif
+ // by default, simply call the handler
+ (handler->*func)(event);
}
#endif // wxUSE_EXCEPTIONS
{
wxString stackTrace;
-#if wxUSE_DBGHELP
- // check that we can get the stack trace before trying to do it
- if ( !wxDbgHelpDLL::Init() )
- return stackTrace;
-#endif
-
class StackDump : public wxStackWalker
{
public:
protected:
virtual void OnStackFrame(const wxStackFrame& frame)
{
- m_stackTrace << wxString::Format(_T("[%02d] "), frame.GetLevel());
+ m_stackTrace << wxString::Format
+ (
+ _T("[%02d] "),
+ wx_truncate_cast(int, frame.GetLevel())
+ );
wxString name = frame.GetName();
if ( !name.empty() )
}
else
{
- m_stackTrace << wxString::Format
- (
- _T("0x%08lx"),
- (unsigned long)frame.GetAddress()
- );
+ m_stackTrace << wxString::Format(_T("%p"), frame.GetAddress());
}
if ( frame.HasSourceLocation() )