\section{Log classes overview}\label{wxlogoverview}
 
-Classes: \helpref{wxLog}{wxlog}
-
-%\helpref{wxLogStderr}{wxlogstderr},%
-%\helpref{wxLogOstream}{wxlogostream}, \helpref{wxLogTextCtrl}{wxlogtextctrl},%
-%\helpref{wxLogWindow}{wxlogwindow}, \helpref{wxLogGui}{wxloggui},%
-%\helpref{wxLogNull}{wxlognull}%
+Classes: \helpref{wxLog}{wxlog}\\
+\helpref{wxLogStderr}{wxlogstderr},\\
+\helpref{wxLogOstream}{wxlogostream}, \helpref{wxLogTextCtrl}{wxlogtextctrl},\\
+\helpref{wxLogWindow}{wxlogwindow}, \helpref{wxLogGui}{wxloggui},\\
+\helpref{wxLogNull}{wxlognull}
 
 This is a general overview of logging classes provided by wxWindows. The word
 logging here has a broad sense, including all of the program output, not only
 \item{\bf wxLogNull} The last log class is quite particular: it doesn't do
 anything. The objects of this class may be instantiated to (temporarily)
 suppress output of {\it wxLogXXX()} functions. As an example, trying to open a
-non-existing file will usually provoke an error message, but if you for some
-reason it's unwanted, just use this construction:
+non-existing file will usually provoke an error message, but if for some
+reasons it's unwanted, just use this construction:
 
 {\small
 \begin{verbatim}
 
 bool wxFile::Flush()
 {
   if ( IsOpened() ) {
-               // @@@ fsync() is not ANSI (BSDish)
-//    if ( fsync(m_fd) == -1 ) { // TODO
-      if (wxTrue) {
-      wxLogSysError(_("can't flush file descriptor %d"), m_fd);
-      return FALSE;
-    }
+    #if defined(_MSC_VER) || wxHAVE_FSYNC
+        if ( fsync(m_fd) == -1 )
+        {
+            wxLogSysError(_("can't flush file descriptor %d"), m_fd);
+            return FALSE;
+        }
+    #else // no fsync
+        // just do nothing
+    #endif // fsync
   }
 
   return TRUE;
 
     // compatibility with old code
     if ( m_list != NULL )
     {
+        if ( m_list->m_keyType == wxKEY_STRING )
+        {
+            free(m_key.string);
+        }
+
         m_list->DetachNode(this);
     }
 }
         node->DeleteData();
     }
 
+    // so that the node knows that it's being deleted by the list
+    node->m_list = NULL;
     delete node;
 }
 
 
   return TRUE;
 }
 
-static char *g_ValidControlClasses[] = { "wxButton", "wxBitmapButton", "wxMessage",
- "wxStaticText", "wxStaticBitmap", "wxText", "wxTextCtrl", "wxMultiText",
- "wxListBox", "wxRadioBox", "wxRadioButton", "wxCheckBox", "wxBitmapCheckBox",
- "wxGroupBox", "wxStaticBox", "wxSlider", "wxGauge", "wxScrollBar",
- "wxChoice", "wxComboBox" } ;
-static int g_ValidControlClassesCount = sizeof(g_ValidControlClasses) / sizeof(char *) ;
+static const char *g_ValidControlClasses[] =
+{
+    "wxButton",
+    "wxBitmapButton",
+    "wxMessage",
+    "wxStaticText",
+    "wxStaticBitmap",
+    "wxText",
+    "wxTextCtrl",
+    "wxMultiText",
+    "wxListBox",
+    "wxRadioBox",
+    "wxRadioButton",
+    "wxCheckBox",
+    "wxBitmapCheckBox",
+    "wxGroupBox",
+    "wxStaticBox",
+    "wxSlider",
+    "wxGauge",
+    "wxScrollBar",
+    "wxChoice",
+    "wxComboBox"
+};
 
 static bool wxIsValidControlClass(const wxString& c)
 {
-   int i;
-   for ( i = 0; i < g_ValidControlClassesCount; i++)
+   for ( size_t i = 0; i < WXSIZEOF(g_ValidControlClasses); i++ )
    {
       if ( c == g_ValidControlClasses[i] )
          return TRUE;
 
 #include "wx/wxprec.h"
 
 #ifdef __BORLANDC__
-#pragma hdrstop
+    #pragma hdrstop
 #endif
 
 #ifndef WX_PRECOMP
 #endif
 
 #if     wxUSE_OWNER_DRAWN
-#include "wx/ownerdrw.h"
+    #include "wx/ownerdrw.h"
 #endif
 
 #if     wxUSE_DRAG_AND_DROP
-#include "wx/msw/ole/droptgt.h"
+    #include "wx/msw/ole/droptgt.h"
 #endif
 
 #include "wx/menuitem.h"
 #endif
 
 #ifdef  __WXDEBUG__
-const char *wxGetMessageName(int message);
+    const char *wxGetMessageName(int message);
 #endif  //__WXDEBUG__
 
 #define WINDOW_MARGIN 3 // This defines sensitivity of Leave events
         wxWndHook = NULL;
         wnd->m_hWnd = (WXHWND) hWnd;
     }
-    //    wxDebugMsg("hWnd = %d, m_hWnd = %d, msg = %d\n", hWnd, m_hWnd, message);
 
     // Stop right here if we don't have a valid handle
     // in our wxWnd object.
 
 // Should probably have a test for 'genuine' NT
 #if defined(__WIN32__)
-#define DIMENSION_TYPE short
+    #define DIMENSION_TYPE short
 #else
-#define DIMENSION_TYPE int
+    #define DIMENSION_TYPE int
 #endif
 
 // Main Windows 3 window proc
 long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
 {
     wxASSERT( m_lastMsg == message &&
-        m_lastWParam == wParam &&
-        m_lastLParam == lParam );
+              m_lastWParam == wParam && m_lastLParam == lParam );
 
 #ifdef __WXDEBUG__
     wxLogTrace(wxTraceMessages, "Processing %s(%lx, %lx)",