From: Kirill Shchetiniuk <[email protected]>

Signed-off-by: Kirill Shchetiniuk <[email protected]>
---
 src/conf/domain_conf.c | 35 ++++++++++++++---------------------
 src/conf/domain_conf.h |  2 ++
 2 files changed, 16 insertions(+), 21 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 396cd1c0db..27e286ff52 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -3433,18 +3433,17 @@ void virDomainShmemDefFree(virDomainShmemDef *def)
 virDomainVideoDef *
 virDomainVideoDefNew(virDomainXMLOption *xmlopt)
 {
-    virDomainVideoDef *def;
+    g_autoptr(virDomainVideoDef) def = NULL;
 
     def = g_new0(virDomainVideoDef, 1);
 
     if (xmlopt && xmlopt->privateData.videoNew &&
         !(def->privateData = xmlopt->privateData.videoNew())) {
-        VIR_FREE(def);
         return NULL;
     }
 
     def->heads = 1;
-    return def;
+    return g_steal_pointer(&def);
 }
 
 
@@ -3496,17 +3495,16 @@ virDomainHostdevDefNew(void)
 static virDomainTPMDef *
 virDomainTPMDefNew(virDomainXMLOption *xmlopt)
 {
-    virDomainTPMDef *def;
+    g_autoptr(virDomainTPMDef) def = NULL;
 
     def = g_new0(virDomainTPMDef, 1);
 
     if (xmlopt && xmlopt->privateData.tpmNew &&
         !(def->privateData = xmlopt->privateData.tpmNew())) {
-        VIR_FREE(def);
         return NULL;
     }
 
-    return def;
+    return g_steal_pointer(&def);
 }
 
 void virDomainTPMDefFree(virDomainTPMDef *def)
@@ -9181,7 +9179,7 @@ virDomainIdmapDefParseXML(xmlXPathContextPtr ctxt,
                           size_t num)
 {
     size_t i;
-    virDomainIdMapEntry *idmap = NULL;
+    g_autofree virDomainIdMapEntry *idmap = NULL;
     VIR_XPATH_NODE_AUTORESTORE(ctxt)
 
     idmap = g_new0(virDomainIdMapEntry, num);
@@ -9193,14 +9191,13 @@ virDomainIdmapDefParseXML(xmlXPathContextPtr ctxt,
             virXPathUInt("string(./@count)", ctxt, &idmap[i].count) < 0) {
             virReportError(VIR_ERR_XML_ERROR, "%s",
                            _("invalid idmap start/target/count settings"));
-            VIR_FREE(idmap);
             return NULL;
         }
     }
 
     g_qsort_with_data(idmap, num, sizeof(idmap[0]), virDomainIdMapEntrySort, 
NULL);
 
-    return idmap;
+    return g_steal_pointer(&idmap);
 }
 
 
@@ -9635,20 +9632,16 @@ virDomainNetAppendIPAddress(virDomainNetDef *def,
                             int family,
                             unsigned int prefix)
 {
-    virNetDevIPAddr *ipDef = NULL;
+    g_autofree virNetDevIPAddr *ipDef = NULL;
     ipDef = g_new0(virNetDevIPAddr, 1);
 
     if (virSocketAddrParse(&ipDef->address, address, family) < 0)
-        goto error;
+        return -1;
     ipDef->prefix = prefix;
 
     VIR_APPEND_ELEMENT(def->guestIP.ips, def->guestIP.nips, ipDef);
 
     return 0;
-
- error:
-    VIR_FREE(ipDef);
-    return -1;
 }
 
 
@@ -10948,16 +10941,16 @@ virDomainChrSourceDefNew(virDomainXMLOption *xmlopt)
 virDomainChrDef *
 virDomainChrDefNew(virDomainXMLOption *xmlopt)
 {
-    virDomainChrDef *def = NULL;
+    g_autoptr(virDomainChrDef) def = NULL;
 
     def = g_new0(virDomainChrDef, 1);
 
     def->target.port = -1;
 
     if (!(def->source = virDomainChrSourceDefNew(xmlopt)))
-        VIR_FREE(def);
+        return NULL;
 
-    return def;
+    return g_steal_pointer(&def);
 }
 
 /* Parse the XML definition for a character device
@@ -12265,16 +12258,16 @@ virDomainGraphicsDefParseXMLDBus(virDomainGraphicsDef 
*def,
 virDomainGraphicsDef *
 virDomainGraphicsDefNew(virDomainXMLOption *xmlopt)
 {
-    virDomainGraphicsDef *def = NULL;
+    g_autoptr(virDomainGraphicsDef) def = NULL;
 
     def = g_new0(virDomainGraphicsDef, 1);
 
     if (xmlopt && xmlopt->privateData.graphicsNew &&
         !(def->privateData = xmlopt->privateData.graphicsNew())) {
-        VIR_FREE(def);
+        return NULL;
     }
 
-    return def;
+    return g_steal_pointer(&def);
 }
 
 
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 81e735993d..206bb781d5 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -3721,6 +3721,7 @@ int virDomainObjWaitUntil(virDomainObj *vm,
 void virDomainPanicDefFree(virDomainPanicDef *panic);
 void virDomainResourceDefFree(virDomainResourceDef *resource);
 void virDomainGraphicsDefFree(virDomainGraphicsDef *def);
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainGraphicsDef, virDomainGraphicsDefFree);
 const char *virDomainInputDefGetPath(virDomainInputDef *input);
 void virDomainInputDefFree(virDomainInputDef *def);
 virDomainDiskDef *virDomainDiskDefNew(virDomainXMLOption *xmlopt);
@@ -3806,6 +3807,7 @@ virDomainDeviceInfo *virDomainDeviceGetInfo(const 
virDomainDeviceDef *device);
 void virDomainDeviceSetData(virDomainDeviceDef *device,
                             void *devicedata);
 void virDomainTPMDefFree(virDomainTPMDef *def);
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainTPMDef, virDomainTPMDefFree);
 
 typedef int (*virDomainDeviceInfoCallback)(virDomainDef *def,
                                            virDomainDeviceDef *dev,
-- 
2.49.0

Reply via email to