tidied up patch 583937 (wxClassInfo dtor)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16492 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2002-08-13 22:37:41 +00:00
parent b15ed74753
commit aa4b7ef978
2 changed files with 26 additions and 20 deletions

View File

@ -74,26 +74,7 @@ public:
, m_next(sm_first)
{ sm_first = this; }
~wxClassInfo()
{
if (sm_first == this)
{
sm_first = m_next;
}
else
{
wxClassInfo * info = sm_first;
while (info)
{
if (info->m_next == this)
{
info->m_next = m_next;
break;
}
info = info->m_next;
}
}
}
~wxClassInfo();
wxObject *CreateObject() { return m_objectConstructor ? (*m_objectConstructor)() : 0; }

View File

@ -136,6 +136,31 @@ void wxObject::operator delete[] (void * buf, const wxChar* WXUNUSED(fileName),
// wxClassInfo
// ----------------------------------------------------------------------------
wxClassInfo::~wxClassInfo()
{
// remove this object from the linked list of all class infos: if we don't
// do it, loading/unloading a DLL containing static wxClassInfo objects is
// not going to work
if ( this == sm_first )
{
sm_first = m_next;
}
else
{
wxClassInfo *info = sm_first;
while (info)
{
if ( info->m_next == this )
{
info->m_next = m_next;
break;
}
info = info->m_next;
}
}
}
wxClassInfo *wxClassInfo::FindClass(const wxChar *className)
{
if ( sm_classTable )