X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a42de1303a51868c89931bb96b984043621d0ed4..08b3ac36d9276f9f2cbd16c463da7ffb7f87e60b:/src/common/init.cpp diff --git a/src/common/init.cpp b/src/common/init.cpp index 2e4b571d1f..b3cd9aa66d 100644 --- a/src/common/init.cpp +++ b/src/common/init.cpp @@ -32,23 +32,15 @@ #include "wx/module.h" -// ---------------------------------------------------------------------------- -// global vars -// ---------------------------------------------------------------------------- - -WXDLLEXPORT wxApp *wxTheApp = NULL; - -wxAppInitializerFunction - wxAppBase::m_appInitFn = (wxAppInitializerFunction)NULL; - // ---------------------------------------------------------------------------- // private classes // ---------------------------------------------------------------------------- -class /* no WXDLLEXPORT */ wxConsoleApp : public wxApp +// we need a dummy app object if the user doesn't want to create a real one +class wxDummyConsoleApp : public wxApp { public: - virtual int OnRun() { wxFAIL_MSG(wxT("unreachable")); return 0; } + virtual int OnRun() { wxFAIL_MSG( _T("unreachable code") ); return 0; } }; // ---------------------------------------------------------------------------- @@ -68,21 +60,6 @@ static size_t gs_nInitCount = 0; // implementation // ============================================================================ -// ---------------------------------------------------------------------------- -// stubs for some GUI functions -// ---------------------------------------------------------------------------- - -void WXDLLEXPORT wxExit() -{ - abort(); -} - -// Yield to other apps/messages -void WXDLLEXPORT wxWakeUpIdle() -{ - // do nothing -} - // ---------------------------------------------------------------------------- // wxBase-specific functions // ---------------------------------------------------------------------------- @@ -103,7 +80,7 @@ bool WXDLLEXPORT wxInitialize() return FALSE; } - wxTheApp = new wxConsoleApp; + wxTheApp = new wxDummyConsoleApp; if ( !wxTheApp ) { @@ -149,18 +126,16 @@ int wxEntry(int argc, char **argv) #if wxUSE_UNICODE wxTheApp->argv = new wxChar*[argc+1]; - int mb_argc = 0; - while (mb_argc < argc) + for ( int mb_argc = 0; mb_argc < argc; mb_argc++ ) { wxTheApp->argv[mb_argc] = wxStrdup(wxConvLocal.cMB2WX(argv[mb_argc])); - mb_argc++; } wxTheApp->argv[mb_argc] = (wxChar *)NULL; #else wxTheApp->argv = argv; #endif - wxString name = wxFileNameFromPath(argv[0]); + wxString name = wxFileNameFromPath(wxTheApp->argv[0]); wxStripExtension(name); wxTheApp->SetAppName(name); @@ -221,6 +196,14 @@ static void DoCleanUp() wxClassInfo::CleanUpClasses(); + // TODO: this should really be done in ~wxApp +#if wxUSE_UNICODE + for ( int mb_argc = 0; mb_argc < wxTheApp->argc; mb_argc++ ) + { + free(wxTheApp->argv[mb_argc]); + } +#endif // wxUSE_UNICODE + // delete the application object delete wxTheApp; wxTheApp = (wxApp *)NULL; @@ -231,4 +214,3 @@ static void DoCleanUp() #endif // wxUSE_LOG } -// vi:sts=4:sw=4:et