summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Krempa <pkrempa@redhat.com>2023-05-09 13:35:10 +0200
committerPeter Krempa <pkrempa@redhat.com>2023-05-09 15:12:03 +0200
commit783c6bc2f03c797b06a483fc813ed0f3373e1daa (patch)
tree29cb4d32b23aae6fbe6f63934c406c4752778637
parentd6d4cfa5fcbbe8b74c6ecd3292a9fa21998415c7 (diff)
downloadlibvirt-783c6bc2f03c797b06a483fc813ed0f3373e1daa.tar.gz
conf: Register autoptr cleanup for 'virDomainSoundDef' and refactor virDomainSoundDefParseXML
Use our modern cleanup path pattern. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
-rw-r--r--src/conf/domain_conf.c19
-rw-r--r--src/conf/domain_conf.h1
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 <codec> 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 def;
+ return NULL;
- 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);