From 783c6bc2f03c797b06a483fc813ed0f3373e1daa Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 9 May 2023 13:35:10 +0200 Subject: [PATCH] conf: Register autoptr cleanup for 'virDomainSoundDef' and refactor virDomainSoundDefParseXML MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use our modern cleanup path pattern. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- src/conf/domain_conf.c | 19 +++++++------------ src/conf/domain_conf.h | 1 + 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index ac7165bad4..204b6a85e1 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -11654,16 +11654,15 @@ virDomainSoundDefParseXML(virDomainXMLOption *xmlopt, xmlXPathContextPtr ctxt, unsigned int flags) { - virDomainSoundDef *def; + g_autoptr(virDomainSoundDef) def = g_new0(virDomainSoundDef, 1); VIR_XPATH_NODE_AUTORESTORE(ctxt) xmlNodePtr audioNode; - def = g_new0(virDomainSoundDef, 1); ctxt->node = node; if (virXMLPropEnum(node, "model", virDomainSoundModelTypeFromString, VIR_XML_PROP_REQUIRED, &def->model) < 0) - goto error; + return NULL; if (virDomainSoundModelSupportsCodecs(def)) { int ncodecs; @@ -11672,7 +11671,7 @@ virDomainSoundDefParseXML(virDomainXMLOption *xmlopt, /* parse the subelements for sound models that support it */ ncodecs = virXPathNodeSet("./codec", ctxt, &codecNodes); if (ncodecs < 0) - goto error; + return NULL; if (ncodecs > 0) { size_t i; @@ -11682,7 +11681,7 @@ virDomainSoundDefParseXML(virDomainXMLOption *xmlopt, for (i = 0; i < ncodecs; i++) { virDomainSoundCodecDef *codec = virDomainSoundCodecDefParseXML(codecNodes[i]); if (codec == NULL) - goto error; + return NULL; codec->cad = def->ncodecs; /* that will do for now */ def->codecs[def->ncodecs++] = codec; @@ -11695,17 +11694,13 @@ virDomainSoundDefParseXML(virDomainXMLOption *xmlopt, if (virXMLPropUInt(audioNode, "id", 10, VIR_XML_PROP_REQUIRED | VIR_XML_PROP_NONZERO, &def->audioId) < 0) - goto error; + return NULL; } if (virDomainDeviceInfoParseXML(xmlopt, node, ctxt, &def->info, flags) < 0) - goto error; + return NULL; - return def; - - error: - virDomainSoundDefFree(def); - return NULL; + return g_steal_pointer(&def); } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 88aef29912..a04f7decc6 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3569,6 +3569,7 @@ void virDomainSoundCodecDefFree(virDomainSoundCodecDef *def); ssize_t virDomainSoundDefFind(const virDomainDef *def, const virDomainSoundDef *sound); void virDomainSoundDefFree(virDomainSoundDef *def); +G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainSoundDef, virDomainSoundDefFree); virDomainSoundDef *virDomainSoundDefRemove(virDomainDef *def, size_t idx); void virDomainAudioDefFree(virDomainAudioDef *def); void virDomainMemballoonDefFree(virDomainMemballoonDef *def);