[Qt] [WK2] Crash in Connection::readyReadHandler() on socket error
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 16 Nov 2011 16:37:29 +0000 (16:37 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 16 Nov 2011 16:37:29 +0000 (16:37 +0000)
https://bugs.webkit.org/show_bug.cgi?id=72392

Patch by Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com> on 2011-11-16
Reviewed by Simon Hausmann.

Add QWeakPointer to SocketNotifierResourceGuard::m_socketNotifier to track
deallocation of referenced object.

* Platform/CoreIPC/unix/ConnectionUnix.cpp:
(CoreIPC::SocketNotifierResourceGuard::SocketNotifierResourceGuard):
(CoreIPC::SocketNotifierResourceGuard::~SocketNotifierResourceGuard):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@100455 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp

index af28be58590a47f9592667fe2f370768085d5021..34e5d4779b91eba3ef2fd6cbf93cf2b35a90bcdd 100644 (file)
@@ -1,3 +1,17 @@
+2011-11-16  Viatcheslav Ostapenko  <ostapenko.viatcheslav@nokia.com>
+
+        [Qt] [WK2] Crash in Connection::readyReadHandler() on socket error
+        https://bugs.webkit.org/show_bug.cgi?id=72392
+
+        Reviewed by Simon Hausmann.
+
+        Add QWeakPointer to SocketNotifierResourceGuard::m_socketNotifier to track
+        deallocation of referenced object.
+
+        * Platform/CoreIPC/unix/ConnectionUnix.cpp:
+        (CoreIPC::SocketNotifierResourceGuard::SocketNotifierResourceGuard):
+        (CoreIPC::SocketNotifierResourceGuard::~SocketNotifierResourceGuard):
+
 2011-11-16  Zeno Albisser  <zeno@webkit.org>
 
         [Qt][WK2][Mac] MiniBrowser cannot create socketpair.
index 5a61ed6474cc1df63337ac442c128786e3ba741c..29acf6c7156b808fdc4f5d79a4eeadd5f28548a7 100644 (file)
@@ -40,6 +40,7 @@
 
 #if PLATFORM(QT)
 #include <QSocketNotifier>
+#include <QWeakPointer>
 #elif PLATFORM(GTK)
 #include <glib.h>
 #endif
@@ -162,16 +163,17 @@ public:
     SocketNotifierResourceGuard(QSocketNotifier* socketNotifier)
         : m_socketNotifier(socketNotifier)
     {
-        m_socketNotifier->setEnabled(false);
+        m_socketNotifier.data()->setEnabled(false);
     }
 
     ~SocketNotifierResourceGuard()
     {
-        m_socketNotifier->setEnabled(true);
+        if (m_socketNotifier)
+            m_socketNotifier.data()->setEnabled(true);
     }
 
 private:
-    QSocketNotifier* const m_socketNotifier;
+    QWeakPointer<QSocketNotifier> const m_socketNotifier;
 };
 #endif