X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e94cd97dd7db345ab4c9abb911cf4396fcac3335..0bbe61b8c18a1795189f0cf73cc61c14a0fb846d:/src/common/init.cpp?ds=sidebyside diff --git a/src/common/init.cpp b/src/common/init.cpp index 639a614add..ee3847634f 100644 --- a/src/common/init.cpp +++ b/src/common/init.cpp @@ -27,12 +27,12 @@ #include "wx/app.h" #include "wx/filefn.h" #include "wx/log.h" - #include "wx/thread.h" #include "wx/intl.h" #include "wx/module.h" #endif #include "wx/init.h" +#include "wx/thread.h" #include "wx/ptr_scpd.h" #include "wx/except.h" @@ -179,7 +179,11 @@ static void ConvertArgsToUnicode(int argc, char **argv) int wargc = 0; for ( int i = 0; i < argc; i++ ) { +#ifdef __DARWIN__ + wxWCharBuffer buf(wxConvFileName->cMB2WX(argv[i])); +#else wxWCharBuffer buf(wxConvLocal.cMB2WX(argv[i])); +#endif if ( !buf ) { wxLogWarning(_("Command line argument %d couldn't be converted to Unicode and will be ignored."), @@ -294,6 +298,12 @@ bool wxEntryStart(int& argc, wxChar **argv) return false; } + // remember, possibly modified (e.g. due to removal of toolkit-specific + // parameters), command line arguments in member variables + app->argc = argc; + app->argv = argv; + + wxCallAppCleanup callAppCleanup(app.get()); // for compatibility call the old initialization function too @@ -394,8 +404,12 @@ void wxEntryCleanup() { wxTheApp->CleanUp(); - delete wxTheApp; + // reset the global pointer to it to NULL before destroying it as in + // some circumstances this can result in executing the code using + // wxTheApp and using half-destroyed object is no good + wxAppConsole * const app = wxApp::GetInstance(); wxApp::SetInstance(NULL); + delete app; }