[libvirt] [PATCH] qemu: Don't initialize struct utsname

Daniel P. Berrange berrange at redhat.com
Mon Jan 22 14:18:29 UTC 2018


On Mon, Jan 22, 2018 at 03:12:46PM +0100, Jiri Denemark wrote:
> On Mon, Jan 22, 2018 at 14:01:26 +0000, Daniel P. Berrange wrote:
> > On Mon, Jan 22, 2018 at 02:54:42PM +0100, Jiri Denemark wrote:
> > > It breaks the build and it is not really useful for anything.
> > 
> > Why does that break the build ?   "{ 0 }" is a valid initializer for
> > any struct according to the C standards.
> 
> Yeah, it seems -Wmissing-braces falsely reports missing braces in there.
> It worked just fine on my host, by our Jenkins builders all failed on
> it. Anyway, I didn't bother looking at details as it's easier to drop
> the initializer. And doing so makes usage of struct utsname in libvirt
> consistent.

Looks like it generates the bogus warning when the first field of the
struct is itself another struct.

eg

  struct Base {
     int a;
  }

  struct One {
     int b;
     struct base c;
  };

  struct Two {
     struct base c;
     int b;
  };


  struct One one = {0};
  struct Two two = {0};


The 'two' initializer generates a warning but the 'one' initializer
does not. So that explains why most of our {0} initalizers are working
ok at least.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list