From: Vadim Zeitlin Date: Mon, 5 Jun 2006 17:01:46 +0000 (+0000) Subject: fixed memory leak introduced by dynamic wxMimeTypesManagerImpl creation (rev. 1.44... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/a893b65e6282e4b96126b3fd22eeab43d446be4b?ds=sidebyside fixed memory leak introduced by dynamic wxMimeTypesManagerImpl creation (rev. 1.44 of mimecmn.cpp) changes; also renamed wxMimeTypesManagerFactory::Get/SetFactory() to just Get/Set() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39568 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/mimetype.h b/include/wx/mimetype.h index 5265a82abd..59369ba565 100644 --- a/include/wx/mimetype.h +++ b/include/wx/mimetype.h @@ -356,8 +356,8 @@ public: virtual wxMimeTypesManagerImpl *CreateMimeTypesManagerImpl(); - static void SetFactory( wxMimeTypesManagerFactory *factory ); - static wxMimeTypesManagerFactory *GetFactory(); + static void Set( wxMimeTypesManagerFactory *factory ); + static wxMimeTypesManagerFactory *Get(); private: static wxMimeTypesManagerFactory *m_factory; diff --git a/src/common/mimecmn.cpp b/src/common/mimecmn.cpp index 27d4b8d429..680d57fc28 100644 --- a/src/common/mimecmn.cpp +++ b/src/common/mimecmn.cpp @@ -453,28 +453,27 @@ bool wxFileType::SetDefaultIcon(const wxString& cmd, int index) #endif } -//---------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- // wxMimeTypesManagerFactory -//---------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- wxMimeTypesManagerFactory *wxMimeTypesManagerFactory::m_factory = NULL; /* static */ -void wxMimeTypesManagerFactory::SetFactory( wxMimeTypesManagerFactory *factory ) +void wxMimeTypesManagerFactory::Set(wxMimeTypesManagerFactory *factory) { - if (wxMimeTypesManagerFactory::m_factory) - delete wxMimeTypesManagerFactory::m_factory; + delete m_factory; - wxMimeTypesManagerFactory::m_factory = factory; + m_factory = factory; } /* static */ -wxMimeTypesManagerFactory *wxMimeTypesManagerFactory::GetFactory() +wxMimeTypesManagerFactory *wxMimeTypesManagerFactory::Get() { - if (!wxMimeTypesManagerFactory::m_factory) - wxMimeTypesManagerFactory::m_factory = new wxMimeTypesManagerFactory; + if ( !m_factory ) + m_factory = new wxMimeTypesManagerFactory; - return wxMimeTypesManagerFactory::m_factory; + return m_factory; } wxMimeTypesManagerImpl *wxMimeTypesManagerFactory::CreateMimeTypesManagerImpl() @@ -489,7 +488,7 @@ wxMimeTypesManagerImpl *wxMimeTypesManagerFactory::CreateMimeTypesManagerImpl() void wxMimeTypesManager::EnsureImpl() { if ( !m_impl ) - m_impl = wxMimeTypesManagerFactory::GetFactory()->CreateMimeTypesManagerImpl(); + m_impl = wxMimeTypesManagerFactory::Get()->CreateMimeTypesManagerImpl(); } bool wxMimeTypesManager::IsOfType(const wxString& mimeType, @@ -673,10 +672,12 @@ class wxMimeTypeCmnModule: public wxModule { public: wxMimeTypeCmnModule() : wxModule() { } + virtual bool OnInit() { return true; } virtual void OnExit() { - // this avoids false memory leak allerts: + wxMimeTypesManagerFactory::Set(NULL); + if ( gs_mimeTypesManager.m_impl != NULL ) { delete gs_mimeTypesManager.m_impl;