]> xenbits.xensource.com Git - libvirt.git/commitdiff
virQEMUSaveData: Register autoclear function and use it in qemuDomainSaveImageOpen
authorPeter Krempa <pkrempa@redhat.com>
Wed, 22 Apr 2020 14:12:39 +0000 (16:12 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 23 Apr 2020 13:36:48 +0000 (15:36 +0200)
In an attempt to simplify qemuDomainSaveImageOpen we need to add
automatic pointer clearing for virQEMUSaveData.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_driver.c

index 9a9361949d32709ee555044ac15cd4d89ce0ccea..5b87aaf9c2603e6c2e1bf18d926ed2d83cf0b009 100644 (file)
@@ -2856,6 +2856,7 @@ virQEMUSaveDataFree(virQEMUSaveDataPtr data)
     VIR_FREE(data);
 }
 
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(virQEMUSaveData, virQEMUSaveDataFree);
 
 /**
  * This function steals @domXML on success.
@@ -6692,7 +6693,7 @@ qemuDomainSaveImageOpen(virQEMUDriverPtr driver,
 {
     int fd = -1;
     int ret = -1;
-    virQEMUSaveDataPtr data = NULL;
+    g_autoptr(virQEMUSaveData) data = NULL;
     virQEMUSaveHeaderPtr header;
     virDomainDefPtr def = NULL;
     int oflags = open_write ? O_RDWR : O_RDONLY;
@@ -6809,13 +6810,12 @@ qemuDomainSaveImageOpen(virQEMUDriverPtr driver,
         goto error;
 
     *ret_def = def;
-    *ret_data = data;
+    *ret_data = g_steal_pointer(&data);
 
     return fd;
 
  error:
     virDomainDefFree(def);
-    virQEMUSaveDataFree(data);
     VIR_FORCE_CLOSE(fd);
     return ret;
 }