diff options
author | Fawzi Mohamed <fawzi.mohamed@digia.com> | 2013-10-04 01:28:47 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@digia.com> | 2013-10-04 09:56:54 +0200 |
commit | c39ec1e3090bab637234aa8c9ecbfa0427ac814c (patch) | |
tree | 40e8b75980286b821b12ef6d5eb40c494b8b1caa /src/plugins/ios/iostoolhandler.cpp | |
parent | 31b8fbbcbf71d0327fe7472dd7ac75605960952b (diff) | |
download | qt-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.cpp | 21 |
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 |