[libvirt] [PATCH v2 1/2] virsh: Slightly rework cmdDomblklist

Michal Privoznik mprivozn at redhat.com
Mon Sep 7 09:06:12 UTC 2015


On 07.09.2015 09:23, Martin Kletzander wrote:
> On Wed, Sep 02, 2015 at 05:58:18PM +0200, Michal Privoznik wrote:
>> Let's move some variables from an inside loop to global function
>> declaration header block. It's going to be easier for next
>> patches. At the same time, order the cleanup calls at the
>> function's end so it's easier to track which variables are freed
>> and which not.
>>
>> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
>> ---
>> tools/virsh-domain-monitor.c | 29 ++++++++++++++---------------
>> 1 file changed, 14 insertions(+), 15 deletions(-)
>>
> 
> I did not follow the discussion around 2/2, but this one does not do
> any functional change and cleans up the code nicely, so ACK ... [1]

Pushed, thanks.

> 
>> diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c
>> index 340a8e2..d4e500b 100644
>> --- a/tools/virsh-domain-monitor.c
>> +++ b/tools/virsh-domain-monitor.c
>> @@ -549,24 +544,28 @@ cmdDomblklist(vshControl *ctl, const vshCmd *cmd)
>>         if (details) {
>>             vshPrint(ctl, "%-10s %-10s %-10s %s\n", type, device,
>>                      target, source ? source : "-");
>> -            VIR_FREE(type);
>> -            VIR_FREE(device);
>>         } else {
>>             vshPrint(ctl, "%-10s %s\n", target, source ? source : "-");
>>         }
>>
>> -        VIR_FREE(target);
>>         VIR_FREE(source);
>> +        VIR_FREE(target);
>> +        VIR_FREE(device);
>> +        VIR_FREE(type);
>>     }
>>
>>     ret = true;
>>
>>  cleanup:
>> +    VIR_FREE(source);
>> +    VIR_FREE(target);
>> +    VIR_FREE(device);
>> +    VIR_FREE(type);
>>     VIR_FREE(disks);
>> -    virDomainFree(dom);
>> -    VIR_FREE(xml);
>> -    xmlFreeDoc(xmldoc);
>>     xmlXPathFreeContext(ctxt);
>> +    xmlFreeDoc(xmldoc);
>> +    VIR_FREE(xml);
>> +    virDomainFree(dom);
> 
> [1] ... even though I don't understand why these are reordered.
> 

It's explained in the commit message. I always felt like cleanup should
follow the order laid out by variable definition at function beginning,
or in reversed order. If it is random, it's harder to spot a leaking
variable.

Michal




More information about the libvir-list mailing list