|
From: | Anthony Liguori |
Subject: | Re: [Qemu-devel] Re: [PATCH 04/14] Zero initialize timespec struct explicitly |
Date: | Mon, 30 Aug 2010 12:41:55 -0500 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.11) Gecko/20100713 Lightning/1.0b1 Thunderbird/3.0.6 |
On 08/30/2010 12:38 PM, 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, address@hidden wrote:From: Jes Sorensen<address@hidden> 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?
Initialize first field to 1 and all remaining fields to 0.That's precisely what it means and there's a lot of code written today that relies on this behavior. No doubt, c99 initializers are an improvement but { 0 } still looks better to me than {}.
However, I wouldn't object to replacing {0} with {}. Avoiding {} in favor of memset is crazy though.
Regards, Anthony Liguori
[Prev in Thread] | Current Thread | [Next in Thread] |