svn commit: r330602 - head/sys/compat/cloudabi

Benjamin Kaduk bjkfbsd at gmail.com
Wed Mar 7 15:54:08 UTC 2018


On Wed, Mar 7, 2018 at 9:44 AM, Ed Maste <emaste at freebsd.org> wrote:

> On 7 March 2018 at 09:47, Eitan Adler <eadler at freebsd.org> wrote:
> > Author: eadler
> > Date: Wed Mar  7 14:47:43 2018
> > New Revision: 330602
> > URL: https://svnweb.freebsd.org/changeset/base/330602
> >
> > Log:
> >   sys/cloudabi: Avoid relying on GNU specific extensions
> >
> >   An empty initializer list is not technically valid C grammar.
> >
> >   MFC After:    1 week
> >
> > -       cloudabi_fdstat_t fsb = {};
> > +       cloudabi_fdstat_t fsb = {0};
>
> In practice it appears initializing via { 0 } also zeros any padding
> in the struct, but I do not believe it's required by the C standard.
> Perhaps a language lawyer can weigh in?
>
> Commenting on this commit just because it's highlighted by this
> change; I do not believe there's a difference between the GNU
> extension { } and { 0 } here.
>
>
The C spec says that if an incomplete initializer is given, then all other
fields
of the structure are initialized to zero.  The state of padding is
unspecified,
whether a complete or incomplete initializer is given.

The "issue" being "fixed" here is that the formal C grammar does not
admit a totally empty initializer, so at least one element of the
initializer
needs to be given in order to satisfy the grammar.  This is pretty silly,
and the extension to allow a totally empty initializer a quite natural one
to make.

-Ben


More information about the svn-src-all mailing list