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>
Reviewed by Adam Roben.
......
......@@ -48,7 +48,7 @@ static const size_t messageMaxSize = 4096;
static const size_t attachmentMaxAmount = 255;
enum {
MessageBodyIsOOL = 1 << 31
MessageBodyIsOOL = 1U << 31
};
class MessageInfo {
......@@ -147,14 +147,14 @@ void Connection::readyReadHandler()
SocketNotifierResourceGuard socketNotifierEnabler(m_socketNotifier);
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;
memset(&message, 0, sizeof(message));
struct iovec iov[1];
memset(&iov, 0, sizeof(iov));
message.msg_control = attachmentDescriptorBuffer;
message.msg_control = attachmentDescriptorBuffer.get();
message.msg_controllen = CMSG_SPACE(sizeof(int) * (attachmentMaxAmount));
iov[0].iov_base = m_readBuffer.data();
......@@ -184,13 +184,13 @@ void Connection::readyReadHandler()
if (messageInfo.attachmentCount()) {
if (controlMessage && controlMessage->cmsg_level == SOL_SOCKET && controlMessage->cmsg_type == SCM_RIGHTS) {
size_t attachmentSizes[messageInfo.attachmentCount()];
memcpy(attachmentSizes, messageData, sizeof(attachmentSizes));
OwnArrayPtr<size_t> attachmentSizes = adoptArrayPtr(new size_t[messageInfo.attachmentCount()]);
memcpy(attachmentSizes.get(), messageData, sizeof(size_t) * messageInfo.attachmentCount());
messageData += sizeof(attachmentSizes);
int fileDescriptors[messageInfo.attachmentCount()];
memcpy(fileDescriptors, CMSG_DATA(controlMessage), sizeof(fileDescriptors));
OwnArrayPtr<int> fileDescriptors = adoptArrayPtr(new int[messageInfo.attachmentCount()]);
memcpy(fileDescriptors.get(), CMSG_DATA(controlMessage), sizeof(int) * messageInfo.attachmentCount());
int attachmentCount = messageInfo.attachmentCount();
......@@ -320,12 +320,12 @@ bool Connection::sendOutgoingMessage(MessageID messageID, PassOwnPtr<ArgumentEnc
iov[0].iov_base = reinterpret_cast<void*>(&messageInfo);
iov[0].iov_len = sizeof(messageInfo);
char attachmentFDBuffer[CMSG_SPACE(sizeof(int) * (attachments.size()))];
size_t attachmentSizes[attachments.size()];
OwnArrayPtr<char> attachmentFDBuffer = adoptArrayPtr(new char[CMSG_SPACE(sizeof(int) * attachments.size())]);
OwnArrayPtr<size_t> attachmentSizes = adoptArrayPtr(new size_t[attachments.size()]);
if (!attachments.isEmpty()) {
message.msg_control = attachmentFDBuffer;
message.msg_controllen = sizeof(attachmentFDBuffer);
message.msg_control = attachmentFDBuffer.get();
message.msg_controllen = sizeof(char) * CMSG_SPACE(sizeof(int) * attachments.size());
struct cmsghdr* cmsg = CMSG_FIRSTHDR(&message);
cmsg->cmsg_level = SOL_SOCKET;
......@@ -340,8 +340,8 @@ bool Connection::sendOutgoingMessage(MessageID messageID, PassOwnPtr<ArgumentEnc
message.msg_controllen = cmsg->cmsg_len;
iov[iovLength].iov_base = attachmentSizes;
iov[iovLength].iov_len = sizeof(attachmentSizes);
iov[iovLength].iov_base = attachmentSizes.get();
iov[iovLength].iov_len = sizeof(size_t) * attachments.size();
++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