On Mon, 30 Aug 2010, Jes Sorensen wrote: > On 08/30/10 18:56, malc wrote: > > On Mon, 30 Aug 2010, Anthony Liguori wrote: > > > >> On 08/30/2010 10:35 AM, jes.soren...@redhat.com wrote: > >>> From: Jes Sorensen<jes.soren...@redhat.com> > >>> diff --git a/linux-aio.c b/linux-aio.c > >>> index 68f4b3d..3240996 100644 > >>> --- a/linux-aio.c > >>> +++ b/linux-aio.c > >>> @@ -118,7 +118,7 @@ static void qemu_laio_completion_cb(void *opaque) > >>> struct io_event events[MAX_EVENTS]; > >>> uint64_t val; > >>> ssize_t ret; > >>> - struct timespec ts = { 0 }; > >>> + struct timespec ts = { 0, 0 }; > >>> > >> > >> I don't like these. What's wrong with { } or { 0 }? Implicit zeroing of > >> members is a critical feature of structure initialization so if there is > >> something wrong with this, it's important to know why because otherwise > >> we've > >> got a massive amount of broken code. > >> > > > > Apart from gcc complaining about fields not being initialized explicitly > > there's nothing wrong with it. > > Sure it compiles, it works, but it's not pretty. What does it mean if > you write = { 1 } in the above case?
It means exactly what standard says it should mean, i.e. set tv_sec to 1 and tv_nsec to 0. > > Anyway the whole point of my patch is this, if we fix things like these, > we are much more likely to be able to catch real bugs using some of > gcc's checking. The patch I submitted is harmless code wise, but it > makes it that bit easier to catch other bugs in the code. In my book > that adds a lot of value. FWIW I wasn't arguing against the patch. -- mailto:av1...@comtv.ru