2011-04-06 Siddharth Mathur <siddharth.mathur@nokia.com>

        Reviewed by Benjamin Poulain.

        [Qt][WK2][Symbian] Remove use of stack arrays with variable size
        https://bugs.webkit.org/show_bug.cgi?id=57877

        For better compiler portability, use new/delete for arrays when size
        isn't known at compile time. Also fix one compiler warning about bitshift
        operations on signed integers.
        * Platform/CoreIPC/qt/ConnectionQt.cpp:
        (CoreIPC::Connection::readyReadHandler):
        (CoreIPC::Connection::sendOutgoingMessage):

git-svn-id: svn://svn.chromium.org/blink/trunk@83116 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent f503206b
2011-04-06 Siddharth Mathur <siddharth.mathur@nokia.com>
Reviewed by Benjamin Poulain.
[Qt][WK2][Symbian] Remove use of stack arrays with variable size
https://bugs.webkit.org/show_bug.cgi?id=57877
For better compiler portability, use new/delete for arrays when size
isn't known at compile time. Also fix one compiler warning about bitshift
operations on signed integers.
* Platform/CoreIPC/qt/ConnectionQt.cpp:
(CoreIPC::Connection::readyReadHandler):
(CoreIPC::Connection::sendOutgoingMessage):
2011-04-06 Brian Weinstein <bweinstein@apple.com> 2011-04-06 Brian Weinstein <bweinstein@apple.com>
Reviewed by Adam Roben. Reviewed by Adam Roben.
......
...@@ -48,7 +48,7 @@ static const size_t messageMaxSize = 4096; ...@@ -48,7 +48,7 @@ static const size_t messageMaxSize = 4096;
static const size_t attachmentMaxAmount = 255; static const size_t attachmentMaxAmount = 255;
enum { enum {
MessageBodyIsOOL = 1 << 31 MessageBodyIsOOL = 1U << 31
}; };
class MessageInfo { class MessageInfo {
...@@ -147,14 +147,14 @@ void Connection::readyReadHandler() ...@@ -147,14 +147,14 @@ void Connection::readyReadHandler()
SocketNotifierResourceGuard socketNotifierEnabler(m_socketNotifier); SocketNotifierResourceGuard socketNotifierEnabler(m_socketNotifier);
AttachmentResourceGuard<Deque<Attachment>, Deque<Attachment>::iterator> attachementDisposer(attachments); AttachmentResourceGuard<Deque<Attachment>, Deque<Attachment>::iterator> attachementDisposer(attachments);
char attachmentDescriptorBuffer[CMSG_SPACE(sizeof(int) * (attachmentMaxAmount))]; OwnArrayPtr<char> attachmentDescriptorBuffer = adoptArrayPtr(new char[CMSG_SPACE(sizeof(int) * (attachmentMaxAmount))]);
struct msghdr message; struct msghdr message;
memset(&message, 0, sizeof(message)); memset(&message, 0, sizeof(message));
struct iovec iov[1]; struct iovec iov[1];
memset(&iov, 0, sizeof(iov)); memset(&iov, 0, sizeof(iov));
message.msg_control = attachmentDescriptorBuffer; message.msg_control = attachmentDescriptorBuffer.get();
message.msg_controllen = CMSG_SPACE(sizeof(int) * (attachmentMaxAmount)); message.msg_controllen = CMSG_SPACE(sizeof(int) * (attachmentMaxAmount));
iov[0].iov_base = m_readBuffer.data(); iov[0].iov_base = m_readBuffer.data();
...@@ -184,13 +184,13 @@ void Connection::readyReadHandler() ...@@ -184,13 +184,13 @@ void Connection::readyReadHandler()
if (messageInfo.attachmentCount()) { if (messageInfo.attachmentCount()) {
if (controlMessage && controlMessage->cmsg_level == SOL_SOCKET && controlMessage->cmsg_type == SCM_RIGHTS) { if (controlMessage && controlMessage->cmsg_level == SOL_SOCKET && controlMessage->cmsg_type == SCM_RIGHTS) {
size_t attachmentSizes[messageInfo.attachmentCount()]; OwnArrayPtr<size_t> attachmentSizes = adoptArrayPtr(new size_t[messageInfo.attachmentCount()]);
memcpy(attachmentSizes, messageData, sizeof(attachmentSizes)); memcpy(attachmentSizes.get(), messageData, sizeof(size_t) * messageInfo.attachmentCount());
messageData += sizeof(attachmentSizes); messageData += sizeof(attachmentSizes);
int fileDescriptors[messageInfo.attachmentCount()]; OwnArrayPtr<int> fileDescriptors = adoptArrayPtr(new int[messageInfo.attachmentCount()]);
memcpy(fileDescriptors, CMSG_DATA(controlMessage), sizeof(fileDescriptors)); memcpy(fileDescriptors.get(), CMSG_DATA(controlMessage), sizeof(int) * messageInfo.attachmentCount());
int attachmentCount = messageInfo.attachmentCount(); int attachmentCount = messageInfo.attachmentCount();
...@@ -320,12 +320,12 @@ bool Connection::sendOutgoingMessage(MessageID messageID, PassOwnPtr<ArgumentEnc ...@@ -320,12 +320,12 @@ bool Connection::sendOutgoingMessage(MessageID messageID, PassOwnPtr<ArgumentEnc
iov[0].iov_base = reinterpret_cast<void*>(&messageInfo); iov[0].iov_base = reinterpret_cast<void*>(&messageInfo);
iov[0].iov_len = sizeof(messageInfo); iov[0].iov_len = sizeof(messageInfo);
char attachmentFDBuffer[CMSG_SPACE(sizeof(int) * (attachments.size()))]; OwnArrayPtr<char> attachmentFDBuffer = adoptArrayPtr(new char[CMSG_SPACE(sizeof(int) * attachments.size())]);
size_t attachmentSizes[attachments.size()]; OwnArrayPtr<size_t> attachmentSizes = adoptArrayPtr(new size_t[attachments.size()]);
if (!attachments.isEmpty()) { if (!attachments.isEmpty()) {
message.msg_control = attachmentFDBuffer; message.msg_control = attachmentFDBuffer.get();
message.msg_controllen = sizeof(attachmentFDBuffer); message.msg_controllen = sizeof(char) * CMSG_SPACE(sizeof(int) * attachments.size());
struct cmsghdr* cmsg = CMSG_FIRSTHDR(&message); struct cmsghdr* cmsg = CMSG_FIRSTHDR(&message);
cmsg->cmsg_level = SOL_SOCKET; cmsg->cmsg_level = SOL_SOCKET;
...@@ -340,8 +340,8 @@ bool Connection::sendOutgoingMessage(MessageID messageID, PassOwnPtr<ArgumentEnc ...@@ -340,8 +340,8 @@ bool Connection::sendOutgoingMessage(MessageID messageID, PassOwnPtr<ArgumentEnc
message.msg_controllen = cmsg->cmsg_len; message.msg_controllen = cmsg->cmsg_len;
iov[iovLength].iov_base = attachmentSizes; iov[iovLength].iov_base = attachmentSizes.get();
iov[iovLength].iov_len = sizeof(attachmentSizes); iov[iovLength].iov_len = sizeof(size_t) * attachments.size();
++iovLength; ++iovLength;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment