]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: domain: Refactor cleanup in virSysinfoChassisParseXML
authorPeter Krempa <pkrempa@redhat.com>
Thu, 6 Oct 2022 09:20:27 +0000 (11:20 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 2 Nov 2022 08:22:56 +0000 (09:22 +0100)
Register automatic cleanup for virSysinfoChassisDef and use it to
refactor the cleanup code paths in virSysinfoChassisParseXML.

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

index 16b4beffc0fbea6e333164fb5b9d99ab70f70e9c..602ce8c0f3bf08423801bec178ceab102d9060ec 100644 (file)
@@ -12267,19 +12267,16 @@ virSysinfoChassisParseXML(xmlNodePtr node,
                          virSysinfoChassisDef **chassisdef)
 {
     VIR_XPATH_NODE_AUTORESTORE(ctxt)
-    int ret = -1;
-    virSysinfoChassisDef *def;
+    g_autoptr(virSysinfoChassisDef) def = g_new0(virSysinfoChassisDef, 1);
 
     ctxt->node = node;
 
     if (!xmlStrEqual(node->name, BAD_CAST "chassis")) {
         virReportError(VIR_ERR_XML_ERROR, "%s",
                        _("XML does not contain expected 'chassis' element"));
-        return ret;
+        return -1;
     }
 
-    def = g_new0(virSysinfoChassisDef, 1);
-
     def->manufacturer = virXPathString("string(entry[@name='manufacturer'])", ctxt);
     def->version = virXPathString("string(entry[@name='version'])", ctxt);
     def->serial = virXPathString("string(entry[@name='serial'])", ctxt);
@@ -12287,14 +12284,11 @@ virSysinfoChassisParseXML(xmlNodePtr node,
     def->sku = virXPathString("string(entry[@name='sku'])", ctxt);
 
     if (!def->manufacturer && !def->version &&
-        !def->serial && !def->asset && !def->sku) {
-        g_clear_pointer(&def, virSysinfoChassisDefFree);
-    }
+        !def->serial && !def->asset && !def->sku)
+        return 0;
 
     *chassisdef = g_steal_pointer(&def);
-    ret = 0;
-    virSysinfoChassisDefFree(def);
-    return ret;
+    return 0;
 }
 
 
index d9f15b06e2f8d150bedb9a7a7eaec0a4d2721a0f..5fa91d96115d9eaea51af54ec8df0761c3b61ca8 100644 (file)
@@ -147,6 +147,7 @@ void virSysinfoSystemDefFree(virSysinfoSystemDef *def);
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(virSysinfoSystemDef, virSysinfoSystemDefFree);
 void virSysinfoBaseBoardDefClear(virSysinfoBaseBoardDef *def);
 void virSysinfoChassisDefFree(virSysinfoChassisDef *def);
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(virSysinfoChassisDef, virSysinfoChassisDefFree);
 void virSysinfoOEMStringsDefFree(virSysinfoOEMStringsDef *def);
 void virSysinfoDefFree(virSysinfoDef *def);