]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: Register autoptr cleanup for 'virDomainSoundDef' and refactor virDomainSoundDef...
authorPeter Krempa <pkrempa@redhat.com>
Tue, 9 May 2023 11:35:10 +0000 (13:35 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 9 May 2023 13:12:03 +0000 (15:12 +0200)
Use our modern cleanup path pattern.

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

index ac7165bad481e1ce7dbc8423ef4625dcc96eea7c..204b6a85e124f5aac96dbb8f0d63f5c32d3e0a8b 100644 (file)
@@ -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);
 }
 
 
index 88aef2991231e1bc70e5ce2fcd836de6c8853650..a04f7decc69c8e721d3ba8d9018a412bc2104fb1 100644 (file)
@@ -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);