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
This commit is contained in:
Vadim Zeitlin
2006-06-05 17:01:46 +00:00
parent b0b5881aea
commit a893b65e62
2 changed files with 15 additions and 14 deletions

View File

@@ -356,8 +356,8 @@ public:
virtual wxMimeTypesManagerImpl *CreateMimeTypesManagerImpl(); virtual wxMimeTypesManagerImpl *CreateMimeTypesManagerImpl();
static void SetFactory( wxMimeTypesManagerFactory *factory ); static void Set( wxMimeTypesManagerFactory *factory );
static wxMimeTypesManagerFactory *GetFactory(); static wxMimeTypesManagerFactory *Get();
private: private:
static wxMimeTypesManagerFactory *m_factory; static wxMimeTypesManagerFactory *m_factory;

View File

@@ -460,21 +460,20 @@ bool wxFileType::SetDefaultIcon(const wxString& cmd, int index)
wxMimeTypesManagerFactory *wxMimeTypesManagerFactory::m_factory = NULL; wxMimeTypesManagerFactory *wxMimeTypesManagerFactory::m_factory = NULL;
/* static */ /* static */
void wxMimeTypesManagerFactory::SetFactory( wxMimeTypesManagerFactory *factory ) void wxMimeTypesManagerFactory::Set(wxMimeTypesManagerFactory *factory)
{ {
if (wxMimeTypesManagerFactory::m_factory) delete m_factory;
delete wxMimeTypesManagerFactory::m_factory;
wxMimeTypesManagerFactory::m_factory = factory; m_factory = factory;
} }
/* static */ /* static */
wxMimeTypesManagerFactory *wxMimeTypesManagerFactory::GetFactory() wxMimeTypesManagerFactory *wxMimeTypesManagerFactory::Get()
{ {
if (!wxMimeTypesManagerFactory::m_factory) if ( !m_factory )
wxMimeTypesManagerFactory::m_factory = new wxMimeTypesManagerFactory; m_factory = new wxMimeTypesManagerFactory;
return wxMimeTypesManagerFactory::m_factory; return m_factory;
} }
wxMimeTypesManagerImpl *wxMimeTypesManagerFactory::CreateMimeTypesManagerImpl() wxMimeTypesManagerImpl *wxMimeTypesManagerFactory::CreateMimeTypesManagerImpl()
@@ -489,7 +488,7 @@ wxMimeTypesManagerImpl *wxMimeTypesManagerFactory::CreateMimeTypesManagerImpl()
void wxMimeTypesManager::EnsureImpl() void wxMimeTypesManager::EnsureImpl()
{ {
if ( !m_impl ) if ( !m_impl )
m_impl = wxMimeTypesManagerFactory::GetFactory()->CreateMimeTypesManagerImpl(); m_impl = wxMimeTypesManagerFactory::Get()->CreateMimeTypesManagerImpl();
} }
bool wxMimeTypesManager::IsOfType(const wxString& mimeType, bool wxMimeTypesManager::IsOfType(const wxString& mimeType,
@@ -673,10 +672,12 @@ class wxMimeTypeCmnModule: public wxModule
{ {
public: public:
wxMimeTypeCmnModule() : wxModule() { } wxMimeTypeCmnModule() : wxModule() { }
virtual bool OnInit() { return true; } virtual bool OnInit() { return true; }
virtual void OnExit() virtual void OnExit()
{ {
// this avoids false memory leak allerts: wxMimeTypesManagerFactory::Set(NULL);
if ( gs_mimeTypesManager.m_impl != NULL ) if ( gs_mimeTypesManager.m_impl != NULL )
{ {
delete gs_mimeTypesManager.m_impl; delete gs_mimeTypesManager.m_impl;