Author: jilles
Date: Sun Apr 17 16:04:39 2011
New Revision: 220742
URL: http://svn.freebsd.org/changeset/base/220742

Log:
  Allow using CMSG_NXTHDR with -Wcast-align.
  
  If various checks are omitted, the CMSG_NXTHDR macro expands to
    (struct cmsghdr *)((char *)(cmsg) + \
    _ALIGN(((struct cmsghdr *)(cmsg))->cmsg_len))
  
  Although there is no alignment problem (assuming cmsg is properly aligned
  and _ALIGN is correct), this violates -Wcast-align on strict-alignment
  architectures. Therefore an intermediate cast to void * is appropriate here.
  
  There is no workaround other than not using -Wcast-align.
  
  MFC after:    2 weeks

Modified:
  head/sys/sys/socket.h

Modified: head/sys/sys/socket.h
==============================================================================
--- head/sys/sys/socket.h       Sun Apr 17 15:09:04 2011        (r220741)
+++ head/sys/sys/socket.h       Sun Apr 17 16:04:39 2011        (r220742)
@@ -515,7 +515,7 @@ struct sockcred {
          _ALIGN(sizeof(struct cmsghdr)) > \
            (char *)(mhdr)->msg_control + (mhdr)->msg_controllen) ? \
            (struct cmsghdr *)0 : \
-           (struct cmsghdr *)((char *)(cmsg) + \
+           (struct cmsghdr *)(void *)((char *)(cmsg) + \
            _ALIGN(((struct cmsghdr *)(cmsg))->cmsg_len)))
 
 /*
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to