X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/005b5298e40a7665a07067ab2a56ae8be4102dfb..2bcd40a342aa3114c40162d45379d003149f2ccc:/src/common/init.cpp diff --git a/src/common/init.cpp b/src/common/init.cpp index 58e2b591a2..5f90f482b5 100644 --- a/src/common/init.cpp +++ b/src/common/init.cpp @@ -392,7 +392,7 @@ int wxEntryReal(int& argc, wxChar **argv) WX_SUPPRESS_UNUSED_WARN(cleanupOnExit); // app initialization - if ( !wxTheApp->OnInit() ) + if ( !wxTheApp->CallOnInit() ) { // don't call OnExit() if OnInit() failed return -1; @@ -401,21 +401,6 @@ int wxEntryReal(int& argc, wxChar **argv) // app execution int retValue = wxTheApp->OnRun(); - // why should we do this? it doesn't close all window, just one of them and - // this shouldn't be necessary anyhow... -#if 0 - // close any remaining windows - wxWindow *topWindow = wxTheApp->GetTopWindow(); - if ( topWindow ) - { - // forcibly delete the window. - topWindow->Destroy(); - - // collect the dead objects - wxTheApp->DeletePendingObjects(); - } -#endif // 0 - // app clean up wxTheApp->OnExit(); @@ -426,7 +411,12 @@ int wxEntryReal(int& argc, wxChar **argv) // OnFatalException() if necessary #if defined(__WXMSW__) && wxUSE_ON_FATAL_EXCEPTION -extern unsigned long wxGlobalSEHandler(); +#ifdef __WXWINCE__ +// For ExitThread +#include "wx/msw/private.h" +#endif + +extern unsigned long wxGlobalSEHandler(EXCEPTION_POINTERS *pExcPtrs); int wxEntry(int& argc, wxChar **argv) { @@ -434,12 +424,19 @@ int wxEntry(int& argc, wxChar **argv) { return wxEntryReal(argc, argv); } - __except ( wxGlobalSEHandler() ) + __except ( wxGlobalSEHandler(GetExceptionInformation()) ) { +#ifdef __WXWINCE__ + ::ExitThread(3); // the same exit code as abort() +#else ::ExitProcess(3); // the same exit code as abort() +#endif +#if !defined(_MSC_VER) || _MSC_VER < 1300 // this code is unreachable but put it here to suppress warnings + // from some compilers return -1; +#endif } }