On 07/23/12 15:49, Stefan Hajnoczi wrote:
> On Mon, Jul 23, 2012 at 1:45 PM, Laszlo Ersek <[email protected]> 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