#include "wx/scopedptr.h"
#include "wx/except.h"
-#if defined(__WXMSW__) && defined(__WXDEBUG__)
+#if defined(__WXMSW__)
#include "wx/msw/msvcrt.h"
- static struct EnableMemLeakChecking
- {
- EnableMemLeakChecking()
+ #ifdef wxCrtSetDbgFlag
+ static struct EnableMemLeakChecking
{
- // do check for memory leaks on program exit (another useful flag
- // is _CRTDBG_DELAY_FREE_MEM_DF which doesn't free deallocated
- // memory which may be used to simulate low-memory condition)
- wxCrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF);
- }
- } gs_enableLeakChecks;
-#endif // __WXMSW__ && __WXDEBUG__
+ EnableMemLeakChecking()
+ {
+ // check for memory leaks on program exit (another useful flag
+ // is _CRTDBG_DELAY_FREE_MEM_DF which doesn't free deallocated
+ // memory which may be used to simulate low-memory condition)
+ wxCrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF);
+ }
+ } gs_enableLeakChecks;
+ #endif // wxCrtSetDbgFlag
+#endif // __WXMSW__
// ----------------------------------------------------------------------------
// private classes
return false;
}
-#if defined(__WXDEBUG__)
- // check if event classes implement Clone() correctly
- // NOTE: the check is done against _all_ event classes which are linked to
- // the executable currently running, which are not necessarily all
- // wxWidgets event classes.
- const wxClassInfo *ci = wxClassInfo::GetFirst();
- for (; ci; ci = ci->GetNext())
- {
- // is this class derived from wxEvent?
- if (!ci->IsKindOf(CLASSINFO(wxEvent)) || wxString(ci->GetClassName()) == "wxEvent")
- continue;
-
- if (!ci->IsDynamic())
- {
- wxLogWarning("The event class '%s' should have a DECLARE_DYNAMIC_CLASS macro!",
- ci->GetClassName());
- continue;
- }
-
- // yes; test if it implements Clone() correctly
- wxEvent* test = wxDynamicCast(ci->CreateObject(),wxEvent);
- 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 cloned;
- delete test;
- }
-#endif
-
return true;
}