X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/338026503bb5f5826bd9fbea9d2ab51b1ee02beb..c19bfe363bbb4e0e5ae818747feddb77ff35533b:/src/common/init.cpp diff --git a/src/common/init.cpp b/src/common/init.cpp index aaeec98204..b01d39cd9b 100644 --- a/src/common/init.cpp +++ b/src/common/init.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: common/init.cpp +// Name: src/common/init.cpp // Purpose: initialisation for the library // Author: Vadim Zeitlin // Modified by: @@ -20,12 +20,11 @@ #include "wx/wxprec.h" #ifdef __BORLANDC__ - #pragma hdrstop + #pragma hdrstop #endif //__BORLANDC__ #ifndef WX_PRECOMP #include "wx/app.h" - #include "wx/debug.h" #include "wx/filefn.h" #include "wx/log.h" #include "wx/thread.h" @@ -70,8 +69,8 @@ public: // we need a special kind of auto pointer to wxApp which not only deletes the // pointer it holds in its dtor but also resets the global application pointer -wxDECLARE_SCOPED_PTR(wxAppConsole, wxAppPtrBase); -wxDEFINE_SCOPED_PTR(wxAppConsole, wxAppPtrBase); +wxDECLARE_SCOPED_PTR(wxAppConsole, wxAppPtrBase) +wxDEFINE_SCOPED_PTR(wxAppConsole, wxAppPtrBase) class wxAppPtr : public wxAppPtrBase { @@ -179,7 +178,8 @@ static void ConvertArgsToUnicode(int argc, char **argv) gs_initData.argv = new wchar_t *[argc + 1]; for ( int i = 0; i < argc; i++ ) { - gs_initData.argv[i] = wxStrdup(wxConvLocal.cMB2WX(argv[i])); + wxWCharBuffer buf(wxConvLocal.cMB2WX(argv[i])); + gs_initData.argv[i] = buf ? wxStrdup(buf) : NULL; } gs_initData.argc = argc; @@ -216,7 +216,7 @@ static bool DoCommonPreInit() // initialization simply disappear under Windows // // note that we will delete this log target below - wxLog::SetActiveTarget(new wxLogBuffer); + delete wxLog::SetActiveTarget(new wxLogBuffer); #endif // wxUSE_LOG return true; @@ -356,15 +356,16 @@ static void DoCommonPostCleanup() { wxModule::CleanUpModules(); - wxClassInfo::CleanUp(); - // we can't do this in wxApp itself because it doesn't know if argv had // been allocated #if wxUSE_UNICODE FreeConvertedArgs(); #endif // wxUSE_UNICODE - // Note: check for memory leaks is now done via wxDebugContextDumpDelayCounter + // 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); + #if wxUSE_LOG // and now delete the last logger as well delete wxLog::SetActiveTarget(NULL); @@ -474,9 +475,8 @@ void wxUninitialize() { wxCRIT_SECT_LOCKER(lockInit, gs_initData.csInit); - if ( !--gs_initData.nInitCount ) + if ( --gs_initData.nInitCount == 0 ) { wxEntryCleanup(); } } -