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();
static void SetFactory( wxMimeTypesManagerFactory *factory );
static wxMimeTypesManagerFactory *GetFactory();
static void Set( wxMimeTypesManagerFactory *factory );
static wxMimeTypesManagerFactory *Get();
private:
static wxMimeTypesManagerFactory *m_factory;

View File

@@ -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;