[libvirt] [PATCH v4 3/5] qemu_driver: use g_autofree when possible

Daniel Henrique Barboza danielhb413 at gmail.com
Thu Oct 17 12:48:40 UTC 2019



On 10/17/19 9:10 AM, Michal Privoznik wrote:
> On 10/16/19 10:54 PM, Daniel Henrique Barboza wrote:
>> String and other scalar pointers an be auto-unref, sparing us
>> a VIR_FREE() call.
>>
>> This patch uses g_autofree whenever possible with strings and
>> other scalar pointer types.
>>
>> Suggested-by: Erik Skultety <eskultet at redhat.com>
>> Signed-off-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
>> ---
>>   src/qemu/qemu_driver.c | 203 ++++++++++++++---------------------------
>>   1 file changed, 68 insertions(+), 135 deletions(-)
>>
>
>
>> @@ -3300,7 +3295,7 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver,
>>                          int compressed, const char *compressedpath,
>>                          const char *xmlin, unsigned int flags)
>>   {
>> -    char *xml = NULL;
>> +    g_autofree char *xml = NULL;
>>       bool was_running = false;
>>       int ret = -1;
>>       virObjectEventPtr event = NULL;
>> @@ -3381,7 +3376,6 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver,
>>       if (!(data = virQEMUSaveDataNew(xml, cookie, was_running, 
>> compressed,
>>                                       driver->xmlopt)))
>>           goto endjob;
>> -    xml = NULL;
>
> No, this line has to be here. The point is that virQEMUSaveDataNew() 
> takes ownership of @xml (in a very clumsy way though), so 
> qemuDomainSaveInternal() has to refrain from freeing it. Setting it to 
> NULL is how we achieve that.

Interesting. I'll keep an eye for this kind of usage next time.


Thanks,


DHB


>
>>         ret = qemuDomainSaveMemory(driver, vm, path, data, 
>> compressedpath,
>>                                  flags, QEMU_ASYNC_JOB_SAVE);
>
> Michal




More information about the libvir-list mailing list