src/network/socket/qlocalsocket_win.cpp
branchRCL_3
changeset 14 c0432d11811c
parent 8 3f74d0d4af4c
--- a/src/network/socket/qlocalsocket_win.cpp	Wed Apr 21 12:15:23 2010 +0300
+++ b/src/network/socket/qlocalsocket_win.cpp	Wed Apr 21 20:15:53 2010 +0300
@@ -39,7 +39,6 @@
 **
 ****************************************************************************/
 
-#include "qlocalsocket.h"
 #include "qlocalsocket_p.h"
 
 #include <private/qthread_p.h>
@@ -425,6 +424,15 @@
 void QLocalSocket::disconnectFromServer()
 {
     Q_D(QLocalSocket);
+
+    // Are we still connected?
+    if (!isValid()) {
+        // If we have unwritten data, the pipeWriter is still present.
+        // It must be destroyed before close() to prevent an infinite loop.
+        delete d->pipeWriter;
+        d->pipeWriter = 0;
+    }
+
     flush();
     if (d->pipeWriter && d->pipeWriter->bytesToWrite() != 0) {
         d->state = QLocalSocket::ClosingState;