diff options
Diffstat (limited to 'ext/socket/rubysocket.h')
-rw-r--r-- | ext/socket/rubysocket.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/ext/socket/rubysocket.h b/ext/socket/rubysocket.h index 356e6f3b1a..60ac25fbbd 100644 --- a/ext/socket/rubysocket.h +++ b/ext/socket/rubysocket.h @@ -138,6 +138,16 @@ struct sockaddr_storage { }; #endif +#if defined __APPLE__ && defined __MACH__ +/* + * CMSG_ macros are broken on 64bit darwin, because __DARWIN_ALIGN + * aligns up to __darwin_size_t which is 64bit, but CMSG_DATA is + * 32bit-aligned. + */ +#undef __DARWIN_ALIGNBYTES +#define __DARWIN_ALIGNBYTES (sizeof(unsigned int) - 1) +#endif + #if defined(_AIX) #ifndef CMSG_SPACE # define CMSG_SPACE(len) (_CMSG_ALIGN(sizeof(struct cmsghdr)) + _CMSG_ALIGN(len)) |