[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-10851-g50815da

kbalazs at webkit.org kbalazs at webkit.org
Wed Dec 22 18:49:16 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit be6f9bdd3e526d704d8ae082ea89a5e15b1b100b
Author: kbalazs at webkit.org <kbalazs at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Dec 20 15:12:06 2010 +0000

    2010-12-20  Balazs Kelemen  <kbalazs at webkit.org>
    
            Reviewed by Kenneth Rohde Christiansen.
    
            [Qt][WK2] Crash in web process after the connection had been closed
            https://bugs.webkit.org/show_bug.cgi?id=51115
    
            Do not call connectionDidClose with a connection that has been explicitly
            invalidated on the listener thread.
            * Platform/CoreIPC/Connection.h:
            * Platform/CoreIPC/qt/ConnectionQt.cpp:
            (CoreIPC::Connection::disconnectHandler): Added.
            (CoreIPC::Connection::open):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@74345 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index e64e3f7..26b510c 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,17 @@
+2010-12-20  Balazs Kelemen  <kbalazs at webkit.org>
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        [Qt][WK2] Crash in web process after the connection had been closed
+        https://bugs.webkit.org/show_bug.cgi?id=51115
+
+        Do not call connectionDidClose with a connection that has been explicitly
+        invalidated on the listener thread.
+        * Platform/CoreIPC/Connection.h:
+        * Platform/CoreIPC/qt/ConnectionQt.cpp:
+        (CoreIPC::Connection::disconnectHandler): Added.
+        (CoreIPC::Connection::open):
+
 2010-12-19  Dan Bernstein  <mitz at apple.com>
 
         Reviewed by Sam Weinig.
diff --git a/WebKit2/Platform/CoreIPC/Connection.h b/WebKit2/Platform/CoreIPC/Connection.h
index 4da2200..d7accdc 100644
--- a/WebKit2/Platform/CoreIPC/Connection.h
+++ b/WebKit2/Platform/CoreIPC/Connection.h
@@ -261,6 +261,7 @@ private:
 #elif PLATFORM(QT)
     // Called on the connection queue.
     void readyReadHandler();
+    void disconnectHandler();
 
     Vector<uint8_t> m_readBuffer;
     size_t m_currentMessageSize;
diff --git a/WebKit2/Platform/CoreIPC/qt/ConnectionQt.cpp b/WebKit2/Platform/CoreIPC/qt/ConnectionQt.cpp
index e3d965c..89c1a17 100644
--- a/WebKit2/Platform/CoreIPC/qt/ConnectionQt.cpp
+++ b/WebKit2/Platform/CoreIPC/qt/ConnectionQt.cpp
@@ -82,6 +82,13 @@ void Connection::readyReadHandler()
     }
 }
 
+void Connection::disconnectHandler()
+{
+    // The connection might have been explicitly invalidated on the listener thread.
+    if (isValid())
+        connectionDidClose();
+}
+
 bool Connection::open()
 {
     ASSERT(!m_socket);
@@ -98,7 +105,7 @@ bool Connection::open()
         m_socket->connectToServer(m_serverName);
         m_connectionQueue.moveSocketToWorkThread(m_socket);
         m_connectionQueue.connectSignal(m_socket, SIGNAL(readyRead()), WorkItem::create(this, &Connection::readyReadHandler));
-        m_connectionQueue.connectSignal(m_socket, SIGNAL(disconnected()), WorkItem::create(this, &Connection::connectionDidClose));
+        m_connectionQueue.connectSignal(m_socket, SIGNAL(disconnected()), WorkItem::create(this, &Connection::disconnectHandler));
         m_isConnected = m_socket->waitForConnected();
     }
     return m_isConnected;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list