]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: Use VIR_AUTOPTR for xmlDoc and xmlXPath objects
authorPeter Krempa <pkrempa@redhat.com>
Mon, 16 Sep 2019 11:16:36 +0000 (13:16 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 19 Sep 2019 12:31:15 +0000 (14:31 +0200)
Refactor functions using these two object types together with
VIR_AUTOPTR.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
src/conf/domain_conf.c
src/conf/storage_conf.c

index 0ab69a936623e7dc8287887d4a1037d41ef0f7d4..5fec2e522088ea177a7ec78a45012c6ae85b4a62 100644 (file)
@@ -16508,20 +16508,19 @@ virDomainDiskDefParse(const char *xmlStr,
                       virDomainXMLOptionPtr xmlopt,
                       unsigned int flags)
 {
-    xmlDocPtr xml;
-    xmlXPathContextPtr ctxt = NULL;
-    virDomainDiskDefPtr disk = NULL;
+    VIR_AUTOPTR(xmlDoc) xml = NULL;
+    VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
     virSecurityLabelDefPtr *seclabels = NULL;
     size_t nseclabels = 0;
 
     if (!(xml = virXMLParseStringCtxt(xmlStr, _("(disk_definition)"), &ctxt)))
-        goto cleanup;
+        return NULL;
 
     if (!virXMLNodeNameEqual(ctxt->node, "disk")) {
         virReportError(VIR_ERR_XML_ERROR,
                        _("expecting root element of 'disk', not '%s'"),
                        ctxt->node->name);
-        goto cleanup;
+        return NULL;
     }
 
     if (def) {
@@ -16529,13 +16528,8 @@ virDomainDiskDefParse(const char *xmlStr,
         nseclabels = def->nseclabels;
     }
 
-    disk = virDomainDiskDefParseXML(xmlopt, ctxt->node, ctxt,
+    return virDomainDiskDefParseXML(xmlopt, ctxt->node, ctxt,
                                     seclabels, nseclabels, flags);
-
- cleanup:
-    xmlFreeDoc(xml);
-    xmlXPathFreeContext(ctxt);
-    return disk;
 }
 
 
index f6de3687abca38dfa58eb3455b9e27d82ad796cf..fcd1701d377a13af10f5d4b5d58b7e4d6dc5eced 100644 (file)
@@ -695,36 +695,30 @@ virStoragePoolSourcePtr
 virStoragePoolDefParseSourceString(const char *srcSpec,
                                    int pool_type)
 {
-    xmlDocPtr doc = NULL;
+    VIR_AUTOPTR(xmlDoc) doc = NULL;
     xmlNodePtr node = NULL;
-    xmlXPathContextPtr xpath_ctxt = NULL;
-    virStoragePoolSourcePtr ret = NULL;
+    VIR_AUTOPTR(xmlXPathContext) xpath_ctxt = NULL;
     VIR_AUTOPTR(virStoragePoolSource) def = NULL;
 
     if (!(doc = virXMLParseStringCtxt(srcSpec,
                                       _("(storage_source_specification)"),
                                       &xpath_ctxt)))
-        goto cleanup;
+        return NULL;
 
     if (VIR_ALLOC(def) < 0)
-        goto cleanup;
+        return NULL;
 
     if (!(node = virXPathNode("/source", xpath_ctxt))) {
         virReportError(VIR_ERR_XML_ERROR, "%s",
                        _("root element was not source"));
-        goto cleanup;
+        return NULL;
     }
 
     if (virStoragePoolDefParseSource(xpath_ctxt, def, pool_type,
                                      node) < 0)
-        goto cleanup;
-
-    VIR_STEAL_PTR(ret, def);
- cleanup:
-    xmlFreeDoc(doc);
-    xmlXPathFreeContext(xpath_ctxt);
+        return NULL;
 
-    return ret;
+    VIR_RETURN_PTR(def);
 }