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