From aa4b7ef978937fe5d93fda9276ecbbee0cd66517 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 13 Aug 2002 22:37:41 +0000 Subject: [PATCH] tidied up patch 583937 (wxClassInfo dtor) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16492 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/object.h | 21 +-------------------- src/common/object.cpp | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/include/wx/object.h b/include/wx/object.h index 7c161ab113..a882a36e6e 100644 --- a/include/wx/object.h +++ b/include/wx/object.h @@ -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; } diff --git a/src/common/object.cpp b/src/common/object.cpp index 7148e579b3..bbbf5350e3 100644 --- a/src/common/object.cpp +++ b/src/common/object.cpp @@ -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 ) -- 2.45.2