From: Kirill Shchetiniuk <kshcheti@redhat.com> Signed-off-by: Kirill Shchetiniuk <kshcheti@redhat.com> --- 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