On 07/23/12 15:49, Stefan Hajnoczi wrote: > On Mon, Jul 23, 2012 at 1:45 PM, Laszlo Ersek <ler...@redhat.com> wrote: >> Two hairs to split: >> >> On 07/20/12 14:01, Stefan Hajnoczi wrote: >> >>> +static NetHubPort *net_hub_port_new(NetHub *hub, const char *name) >>> +{ >>> + VLANClientState *nc; >>> + NetHubPort *port; >>> + unsigned int id = hub->num_ports++; >> >> There are projects that don't like to put logic or externally visible >> side-effects into initializers. I don't know about qemu. > > I see what you're saying, we also add it to the hub's port list > further down. It could be split into _new() and hub_add_port(hub, > port) but then autogenerating a unique name becomes harder. Since > this function is static, the scope is limited and we can assume > callers understand what is going on here. > > I'd like to leave it this way or do you see a concrete change that > improves the code?
Oh no, that's not what I meant -- the function is perfectly fine, it's just that the post-increment of object A shouldn't be in the definition / initializer list of object B. (Keeping the increment and the construcion in one place is actually a good thing IMHO.) The idea is, rather than unsigned int id = hub->num_ports++; it should say unsigned int id; /* ... */ id = hub->num_ports++; ... Hm, yes, I remember it from <http://www.manpages.info/freebsd/style.9.html>. But again, I'm not sure how qemu treats this. Laszlo