]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/ipc/baseclient.cpp
Fix a crash in wxExecute() in wxMSW too.
[wxWidgets.git] / samples / ipc / baseclient.cpp
index f10e49b43a64940584da03998f977fce8282c2ac..4543148f41c301a4b881933863d4948518bf4d9c 100644 (file)
@@ -7,7 +7,7 @@
 // Created:     2007-11-08
 // RCS-ID:      $Id$
 // Copyright:   (c) 2007 Anders Larsen
-// License:     wxWindows licence
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
@@ -184,8 +184,7 @@ void MyClient::Disconnect()
     if (m_connection)
     {
         m_connection->Disconnect();
-        delete m_connection;
-        m_connection = NULL;
+        wxDELETE(m_connection);
         wxLogMessage("Client disconnected from server");
     }
     wxGetApp().ExitMainLoop();
@@ -229,18 +228,23 @@ void MyClient::Notify()
 
         case 15:
             testfunc = &MyClient::TestDisconnect;
+            // We don't need the timer any more, we're going to exit soon.
+            Stop();
             break;
+
+        default:
+            // No need to wake up idle handling.
+            return;
     }
 
-    if ( testfunc )
-        m_tests.push_back(testfunc);
+    m_tests.push_back(testfunc);
 
     wxWakeUpIdle();
 }
 
 void MyClient::StartNextTestIfNecessary()
 {
-    if ( !m_tests.empty() )
+    while ( !m_tests.empty() )
     {
         MyClientTestFunc testfunc = m_tests.front();
         m_tests.erase(m_tests.begin());
@@ -319,7 +323,9 @@ bool MyConnection::DoExecute(const void *data, size_t size, wxIPCFormat format)
     Log("Execute", wxEmptyString, wxEmptyString, data, size, format);
     bool retval = wxConnection::DoExecute(data, size, format);
     if (!retval)
+    {
         wxLogMessage("Execute failed!");
+    }
     return retval;
 }