In article <20110530162059.1a6d217...@cvs.netbsd.org>, Joerg Sonnenberger <source-changes-d@NetBSD.org> wrote: >-=-=-=-=-=- >
>+#ifdef __clang__ >+ char buf[128]; >+#else > char buf[CMSG_SPACE(sizeof(int))]; >+#endif > } cmsgbuf; Wouldn't it be better insted to re-define CMSG_SPACE for clang like: #ifdef __clang__ #define CMSG_SPACE(x) ((x) + 128) #else ... #endif This is bad too, what if sizeof(buf) < CMSG_SPACE(sizeof(int)): > if (buf != NULL && buf->fd != -1) { > msg.msg_control = (caddr_t)&cmsgbuf.buf; >- msg.msg_controllen = sizeof(cmsgbuf.buf); >+ msg.msg_controllen = CMSG_SPACE(sizeof(int)); > cmsg = CMSG_FIRSTHDR(&msg); > cmsg->cmsg_len = CMSG_LEN(sizeof(int)); > cmsg->cmsg_level = SOL_SOCKET;