[SCM] WebKit Debian packaging branch, debian/experimental, updated. debian/1.3.8-1-1049-g2e11a8e

andersca at apple.com andersca at apple.com
Fri Jan 21 14:35:28 UTC 2011


The following commit has been merged in the debian/experimental branch:
commit f9a5fcf7eacde6b563132cf1038fa9d82201f5ba
Author: andersca at apple.com <andersca at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Dec 22 23:30:36 2010 +0000

    2010-12-22  Anders Carlsson  <andersca at apple.com>
    
            Reviewed by Sam Weinig.
    
            Move Mach message receiving code out into a new function
            https://bugs.webkit.org/show_bug.cgi?id=51502
    
            * Platform/CoreIPC/mac/ConnectionMac.cpp:
            (CoreIPC::readFromMachPort):
            (CoreIPC::Connection::receiveSourceEventHandler):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@74508 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 9f9b87f..5c23133 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,14 @@
+2010-12-22  Anders Carlsson  <andersca at apple.com>
+
+        Reviewed by Sam Weinig.
+
+        Move Mach message receiving code out into a new function
+        https://bugs.webkit.org/show_bug.cgi?id=51502
+
+        * Platform/CoreIPC/mac/ConnectionMac.cpp:
+        (CoreIPC::readFromMachPort):
+        (CoreIPC::Connection::receiveSourceEventHandler):
+
 2010-12-22  Jeff Miller  <jeffm at apple.com>
 
         Reviewed by Sam Weinig.
diff --git a/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp b/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp
index ef53764..5a62d78 100644
--- a/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp
+++ b/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp
@@ -284,34 +284,44 @@ static PassOwnPtr<ArgumentDecoder> createArgumentDecoder(mach_msg_header_t* head
     return adoptPtr(new ArgumentDecoder(messageBody, messageBodySize, attachments));
 }
 
-void Connection::receiveSourceEventHandler()
+// The receive buffer size should always include the maximum trailer size.
+static const size_t receiveBufferSize = inlineMessageMaxSize + MAX_TRAILER_SIZE;
+typedef Vector<char, receiveBufferSize> ReceiveBuffer;
+
+static mach_msg_header_t* readFromMachPort(mach_port_t machPort, ReceiveBuffer& buffer)
 {
-    // The receive buffer size should always include the maximum trailer size.
-    static const size_t receiveBufferSize = inlineMessageMaxSize + MAX_TRAILER_SIZE;
+    buffer.resize(receiveBufferSize);
 
-    Vector<char, receiveBufferSize> buffer(receiveBufferSize);
-    
     mach_msg_header_t* header = reinterpret_cast<mach_msg_header_t*>(buffer.data());
-    
-    kern_return_t kr = mach_msg(header, MACH_RCV_MSG | MACH_RCV_LARGE | MACH_RCV_TIMEOUT, 0, buffer.size(), m_receivePort, 0, MACH_PORT_NULL);
+    kern_return_t kr = mach_msg(header, MACH_RCV_MSG | MACH_RCV_LARGE | MACH_RCV_TIMEOUT, 0, buffer.size(), machPort, 0, MACH_PORT_NULL);
     if (kr == MACH_RCV_TIMED_OUT)
-        return;
+        return 0;
 
     if (kr == MACH_RCV_TOO_LARGE) {
         // The message was too large, resize the buffer and try again.
         buffer.resize(header->msgh_size + MAX_TRAILER_SIZE);
-        
         header = reinterpret_cast<mach_msg_header_t*>(buffer.data());
         
-        kr = mach_msg(header, MACH_RCV_MSG | MACH_RCV_LARGE | MACH_RCV_TIMEOUT, 0, buffer.size(), m_receivePort, 0, MACH_PORT_NULL);
+        kr = mach_msg(header, MACH_RCV_MSG | MACH_RCV_LARGE | MACH_RCV_TIMEOUT, 0, buffer.size(), machPort, 0, MACH_PORT_NULL);
         ASSERT(kr != MACH_RCV_TOO_LARGE);
     }
 
     if (kr != MACH_MSG_SUCCESS) {
         ASSERT_NOT_REACHED();
-        return;
+        return 0;
     }
 
+    return header;
+}
+
+void Connection::receiveSourceEventHandler()
+{
+    ReceiveBuffer buffer;
+
+    mach_msg_header_t* header = readFromMachPort(m_receivePort, buffer);
+    if (!header)
+        return;
+
     MessageID messageID = MessageID::fromInt(header->msgh_id);
     OwnPtr<ArgumentDecoder> arguments = createArgumentDecoder(header);
     ASSERT(arguments);

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list