mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
conf: Use VIR_AUTOPTR for xmlDoc and xmlXPath objects
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>
This commit is contained in:
parent
8aa2233099
commit
a8de158713
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
return NULL;
|
||||
|
||||
VIR_STEAL_PTR(ret, def);
|
||||
cleanup:
|
||||
xmlFreeDoc(doc);
|
||||
xmlXPathFreeContext(xpath_ctxt);
|
||||
|
||||
return ret;
|
||||
VIR_RETURN_PTR(def);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user