summaryrefslogtreecommitdiff
path: root/src/plugins/ios/iostoolhandler.cpp
diff options
context:
space:
mode:
authorFawzi Mohamed <fawzi.mohamed@digia.com>2013-10-04 01:28:47 +0200
committerEike Ziller <eike.ziller@digia.com>2013-10-04 09:56:54 +0200
commitc39ec1e3090bab637234aa8c9ecbfa0427ac814c (patch)
tree40e8b75980286b821b12ef6d5eb40c494b8b1caa /src/plugins/ios/iostoolhandler.cpp
parent31b8fbbcbf71d0327fe7472dd7ac75605960952b (diff)
downloadqt-creator-c39ec1e3090bab637234aa8c9ecbfa0427ac814c.tar.gz
ios: fix compilation with osx 10.6
Change-Id: Id0b28c0aab46237b60756f12be05e3d05df9c9e7 Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com> Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Diffstat (limited to 'src/plugins/ios/iostoolhandler.cpp')
-rw-r--r--src/plugins/ios/iostoolhandler.cpp21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/plugins/ios/iostoolhandler.cpp b/src/plugins/ios/iostoolhandler.cpp
index e91276b6c0..71891b85d1 100644
--- a/src/plugins/ios/iostoolhandler.cpp
+++ b/src/plugins/ios/iostoolhandler.cpp
@@ -39,6 +39,7 @@
#include <QDebug>
#include <QCoreApplication>
#include <QList>
+#include <QScopedArrayPointer>
#include <sys/types.h>
#include <sys/socket.h>
@@ -404,6 +405,17 @@ void IosToolHandlerPrivate::subprocessFinished(int exitCode, QProcess::ExitStatu
}
}
+#ifndef CMSG_SPACE
+size_t CMSG_SPACE(size_t len) {
+ msghdr msg;
+ cmsghdr cmsg;
+ msg.msg_control = &cmsg;
+ msg.msg_controllen = ~socklen_t(0); /* To maximize the chance that CMSG_NXTHDR won't return NULL */
+ cmsg.cmsg_len = CMSG_LEN(len);
+ return reinterpret_cast<unsigned char *>(CMSG_NXTHDR(&msg, &cmsg)) - reinterpret_cast<unsigned char *>(&cmsg);
+}
+#endif
+
int recv_fd(int socket)
{
int sent_fd;
@@ -421,10 +433,11 @@ int recv_fd(int socket)
socket_message.msg_iovlen = 1;
/* provide space for the ancillary data */
- char ancillary_element_buffer[CMSG_SPACE(sizeof(int))];
- memset(ancillary_element_buffer, 0, CMSG_SPACE(sizeof(int)));
- socket_message.msg_control = ancillary_element_buffer;
- socket_message.msg_controllen = CMSG_SPACE(sizeof(int));
+ size_t dimAncillaryEl = CMSG_SPACE(sizeof(int));
+ QScopedArrayPointer<char> ancillary_element_buffer(new char[dimAncillaryEl]);
+ memset(ancillary_element_buffer.data(), 0, dimAncillaryEl);
+ socket_message.msg_control = ancillary_element_buffer.data();
+ socket_message.msg_controllen = dimAncillaryEl;
int flags = 0;
#ifdef MSG_CMSG_CLOEXEC