+#if wxUSE_LOG
+ // flush the logged messages if any and install a 'safer' log target: the
+ // default one (wxLogGui) can't be used after the resources are freed just
+ // below and the user supplied one might be even more unsafe (using any
+ // wxWindows GUI function is unsafe starting from now)
+ wxLog::DontCreateOnDemand();
+
+ // this will flush the old messages if any
+ delete wxLog::SetActiveTarget(new wxLogStderr);
+#endif // wxUSE_LOG
+
+ wxModule::CleanUpModules();
+}
+
+// cleanup done after destroying wxTheApp
+static void DoCommonPostCleanup()
+{
+ wxClassInfo::CleanUp();
+
+ // we can't do this in wxApp itself because it doesn't know if argv had
+ // been allocated
+#if wxUSE_UNICODE
+ FreeConvertedArgs();
+#endif // wxUSE_UNICODE
+
+ // check for memory leaks
+#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT
+ if (wxDebugContext::CountObjectsLeft(TRUE) > 0)