X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1c193821a999730fbf6a9bea83763f37daae68f1..1d39da4b229f228045c0aa6722665d42d5db61b8:/src/common/init.cpp?ds=sidebyside diff --git a/src/common/init.cpp b/src/common/init.cpp index fe406b7be9..32288fd1e3 100644 --- a/src/common/init.cpp +++ b/src/common/init.cpp @@ -59,7 +59,11 @@ class wxDummyConsoleApp : public wxAppConsole { public: + wxDummyConsoleApp() { } + virtual int OnRun() { wxFAIL_MSG( _T("unreachable code") ); return 0; } + + DECLARE_NO_COPY_CLASS(wxDummyConsoleApp) }; // we need a special kind of auto pointer to wxApp which not only deletes the @@ -87,6 +91,8 @@ public: wxTheApp = ptr; } + + DECLARE_NO_COPY_CLASS(wxAppPtr) }; // class to ensure that wxAppBase::CleanUp() is called if our Initialize() @@ -152,6 +158,8 @@ static struct InitData // free it when doing cleanup to avoid memory leaks wchar_t **argv; #endif // wxUSE_UNICODE + + DECLARE_NO_COPY_CLASS(InitData) } gs_initData; // ============================================================================ @@ -237,7 +245,11 @@ bool wxEntryStart(int& argc, wxChar **argv) if ( fnCreate ) { // he did, try to create the custom wxApp object - app.Set((*fnCreate)()); + // + // NB: cast is needed because for the backwards-compatibility + // reasons wxTheApp is really a wxApp and not just + // wxAppConsole... + app.Set((wxApp*)(*fnCreate)()); } } @@ -401,21 +413,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(); @@ -431,7 +428,7 @@ int wxEntryReal(int& argc, wxChar **argv) #include "wx/msw/private.h" #endif -extern unsigned long wxGlobalSEHandler(); +extern unsigned long wxGlobalSEHandler(EXCEPTION_POINTERS *pExcPtrs); int wxEntry(int& argc, wxChar **argv) { @@ -439,7 +436,7 @@ 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()