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:
@@ -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;
|
||||||
|
@@ -453,28 +453,27 @@ bool wxFileType::SetDefaultIcon(const wxString& cmd, int index)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxMimeTypesManagerFactory
|
// wxMimeTypesManagerFactory
|
||||||
//----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
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;
|
||||||
|
Reference in New Issue
Block a user