On Tue, Aug 05, 2014 at 09:47:09PM -0500, Dan McGee wrote:
> On Tue, Aug 5, 2014 at 9:11 PM, Greg KH <g...@kroah.com> wrote:
> 
>     On Tue, Aug 05, 2014 at 07:58:47PM -0500, Dan McGee wrote:
>     > Compilation is failing because we are doing something not allowed by the
>     > language spec, but OK by GCC extensions in our MAX() macro.
>     >
>     > src/resolve/resolved-manager.c:759:43: error: non-const static data
>     member must be initialized out of line
>     >                 uint8_t buffer[CMSG_SPACE(MAX(sizeof(struct in_pktinfo),
>     sizeof(struct in6_pktinfo)))
>     >                                           ^
>     >
>     > Add a new constant that does this in a way both compilers are OK with,
>     > since we know all factors in the size computation are static.
> 
>     Why not just fix MAX()?
> 
> 
> Mainly because 1) I'm not a preprocessor expert, and 2) this code is the only
> broken usage of MAX() and it was recently introduced.

But how will I, a non-clang-developer, know to use your special version
instead of the "normal" MAX() macro?

> I'm all for someone fixing this the "right" way if this is deemed incorrect,
> but right now one can't even compile on what most would consider a
> non-experimental C toolchain, and this was the quickest and easiest fix I 
> could
> come up with.

I'd recommend fixing it "properly", or push back and fix clang's
extension definitions.

Oh and the systemd MAX() macro isn't typesafe, I'll work on fixing that
when I get a chance, it's messy as people haven't been all that careful
in some places...

thanks,

greg k-h
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to