don't assert (and then crash) in wxEvent::Clone() checking code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57601 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -255,28 +255,34 @@ static bool DoCommonPostInit()
|
|||||||
// the executable currently running, which are not necessarily all
|
// the executable currently running, which are not necessarily all
|
||||||
// wxWidgets event classes.
|
// wxWidgets event classes.
|
||||||
const wxClassInfo *ci = wxClassInfo::GetFirst();
|
const wxClassInfo *ci = wxClassInfo::GetFirst();
|
||||||
while (ci)
|
for (; ci; ci = ci->GetNext())
|
||||||
{
|
{
|
||||||
// is this class derived from wxEvent?
|
// is this class derived from wxEvent?
|
||||||
if (ci->IsKindOf(CLASSINFO(wxEvent)) && wxString(ci->GetClassName()) != "wxEvent")
|
if (!ci->IsKindOf(CLASSINFO(wxEvent)) || wxString(ci->GetClassName()) == "wxEvent")
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!ci->IsDynamic())
|
||||||
{
|
{
|
||||||
if (!ci->IsDynamic())
|
wxLogWarning("The event class '%s' should have a DECLARE_DYNAMIC_CLASS macro!",
|
||||||
wxLogWarning("The event class '%s' should have a DECLARE_DYNAMIC_CLASS macro!",
|
ci->GetClassName());
|
||||||
ci->GetClassName());
|
continue;
|
||||||
|
|
||||||
// yes; test if it implements Clone() correctly
|
|
||||||
wxEvent* test = dynamic_cast<wxEvent*>(ci->CreateObject());
|
|
||||||
wxASSERT_MSG(test, "The event class should have a DECLARE_DYNAMIC_CLASS macro!");
|
|
||||||
|
|
||||||
wxEvent* cloned = test->Clone();
|
|
||||||
if (!cloned || cloned->GetClassInfo() != ci)
|
|
||||||
wxLogWarning("The event class '%s' does not correctly implements wxEvent::Clone()!",
|
|
||||||
ci->GetClassName());
|
|
||||||
|
|
||||||
delete test;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ci = ci->GetNext();
|
// yes; test if it implements Clone() correctly
|
||||||
|
wxEvent* test = dynamic_cast<wxEvent*>(ci->CreateObject());
|
||||||
|
if (test == NULL)
|
||||||
|
{
|
||||||
|
wxLogWarning("The event class '%s' should have a DECLARE_DYNAMIC_CLASS macro!",
|
||||||
|
ci->GetClassName());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxEvent* cloned = test->Clone();
|
||||||
|
if (!cloned || cloned->GetClassInfo() != ci)
|
||||||
|
wxLogWarning("The event class '%s' does not correctly implement Clone()!",
|
||||||
|
ci->GetClassName());
|
||||||
|
|
||||||
|
delete test;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user