conf: Use automatic pointers for xmlXPathContext

Clean up functions which grab and free the context to use VIR_AUTOPTR.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
Peter Krempa 2019-09-16 12:52:57 +02:00
parent 475777c9ec
commit 8aa2233099
8 changed files with 35 additions and 76 deletions

View File

@ -209,13 +209,12 @@ virDomainCheckpointDefParseNode(xmlDocPtr xml,
void *parseOpaque, void *parseOpaque,
unsigned int flags) unsigned int flags)
{ {
xmlXPathContextPtr ctxt = NULL; VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
virDomainCheckpointDefPtr def = NULL;
VIR_AUTOFREE(char *) schema = NULL; VIR_AUTOFREE(char *) schema = NULL;
if (!virXMLNodeNameEqual(root, "domaincheckpoint")) { if (!virXMLNodeNameEqual(root, "domaincheckpoint")) {
virReportError(VIR_ERR_XML_ERROR, "%s", _("domaincheckpoint")); virReportError(VIR_ERR_XML_ERROR, "%s", _("domaincheckpoint"));
goto cleanup; return NULL;
} }
/* This is a new enough API to make schema validation unconditional */ /* This is a new enough API to make schema validation unconditional */
@ -228,13 +227,10 @@ virDomainCheckpointDefParseNode(xmlDocPtr xml,
return NULL; return NULL;
if (!(ctxt = virXMLXPathContextNew(xml))) if (!(ctxt = virXMLXPathContextNew(xml)))
goto cleanup; return NULL;
ctxt->node = root; ctxt->node = root;
def = virDomainCheckpointDefParse(ctxt, caps, xmlopt, parseOpaque, flags); return virDomainCheckpointDefParse(ctxt, caps, xmlopt, parseOpaque, flags);
cleanup:
xmlXPathFreeContext(ctxt);
return def;
} }
virDomainCheckpointDefPtr virDomainCheckpointDefPtr

View File

@ -21600,26 +21600,21 @@ virDomainObjParseNode(xmlDocPtr xml,
virDomainXMLOptionPtr xmlopt, virDomainXMLOptionPtr xmlopt,
unsigned int flags) unsigned int flags)
{ {
xmlXPathContextPtr ctxt = NULL; VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
virDomainObjPtr obj = NULL;
if (!virXMLNodeNameEqual(root, "domstatus")) { if (!virXMLNodeNameEqual(root, "domstatus")) {
virReportError(VIR_ERR_XML_ERROR, virReportError(VIR_ERR_XML_ERROR,
_("unexpected root element <%s>, " _("unexpected root element <%s>, "
"expecting <domstatus>"), "expecting <domstatus>"),
root->name); root->name);
goto cleanup; return NULL;
} }
if (!(ctxt = virXMLXPathContextNew(xml))) if (!(ctxt = virXMLXPathContextNew(xml)))
goto cleanup; return NULL;
ctxt->node = root; ctxt->node = root;
obj = virDomainObjParseXML(xml, ctxt, caps, xmlopt, flags); return virDomainObjParseXML(xml, ctxt, caps, xmlopt, flags);
cleanup:
xmlXPathFreeContext(ctxt);
return obj;
} }

View File

@ -819,8 +819,7 @@ virInterfaceDefPtr
virInterfaceDefParseNode(xmlDocPtr xml, virInterfaceDefParseNode(xmlDocPtr xml,
xmlNodePtr root) xmlNodePtr root)
{ {
xmlXPathContextPtr ctxt = NULL; VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
virInterfaceDefPtr def = NULL;
if (!virXMLNodeNameEqual(root, "interface")) { if (!virXMLNodeNameEqual(root, "interface")) {
virReportError(VIR_ERR_XML_ERROR, virReportError(VIR_ERR_XML_ERROR,
@ -831,14 +830,10 @@ virInterfaceDefParseNode(xmlDocPtr xml,
} }
if (!(ctxt = virXMLXPathContextNew(xml))) if (!(ctxt = virXMLXPathContextNew(xml)))
goto cleanup; return NULL;
ctxt->node = root; ctxt->node = root;
def = virInterfaceDefParseXML(ctxt, VIR_INTERFACE_TYPE_LAST); return virInterfaceDefParseXML(ctxt, VIR_INTERFACE_TYPE_LAST);
cleanup:
xmlXPathFreeContext(ctxt);
return def;
} }

View File

@ -2114,8 +2114,7 @@ virNetworkDefParseNode(xmlDocPtr xml,
xmlNodePtr root, xmlNodePtr root,
virNetworkXMLOptionPtr xmlopt) virNetworkXMLOptionPtr xmlopt)
{ {
xmlXPathContextPtr ctxt = NULL; VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
virNetworkDefPtr def = NULL;
if (!virXMLNodeNameEqual(root, "network")) { if (!virXMLNodeNameEqual(root, "network")) {
virReportError(VIR_ERR_XML_ERROR, virReportError(VIR_ERR_XML_ERROR,
@ -2126,14 +2125,10 @@ virNetworkDefParseNode(xmlDocPtr xml,
} }
if (!(ctxt = virXMLXPathContextNew(xml))) if (!(ctxt = virXMLXPathContextNew(xml)))
goto cleanup; return NULL;
ctxt->node = root; ctxt->node = root;
def = virNetworkDefParseXML(ctxt, xmlopt); return virNetworkDefParseXML(ctxt, xmlopt);
cleanup:
xmlXPathFreeContext(ctxt);
return def;
} }

View File

@ -2052,8 +2052,7 @@ virNodeDeviceDefParseNode(xmlDocPtr xml,
int create, int create,
const char *virt_type) const char *virt_type)
{ {
xmlXPathContextPtr ctxt = NULL; VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
virNodeDeviceDefPtr def = NULL;
if (!virXMLNodeNameEqual(root, "device")) { if (!virXMLNodeNameEqual(root, "device")) {
virReportError(VIR_ERR_XML_ERROR, virReportError(VIR_ERR_XML_ERROR,
@ -2064,14 +2063,10 @@ virNodeDeviceDefParseNode(xmlDocPtr xml,
} }
if (!(ctxt = virXMLXPathContextNew(xml))) if (!(ctxt = virXMLXPathContextNew(xml)))
goto cleanup; return NULL;
ctxt->node = root; ctxt->node = root;
def = virNodeDeviceDefParseXML(ctxt, create, virt_type); return virNodeDeviceDefParseXML(ctxt, create, virt_type);
cleanup:
xmlXPathFreeContext(ctxt);
return def;
} }

View File

@ -2746,25 +2746,20 @@ virNWFilterDefPtr
virNWFilterDefParseNode(xmlDocPtr xml, virNWFilterDefParseNode(xmlDocPtr xml,
xmlNodePtr root) xmlNodePtr root)
{ {
xmlXPathContextPtr ctxt = NULL; VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
virNWFilterDefPtr def = NULL;
if (STRNEQ((const char *)root->name, "filter")) { if (STRNEQ((const char *)root->name, "filter")) {
virReportError(VIR_ERR_XML_ERROR, virReportError(VIR_ERR_XML_ERROR,
"%s", "%s",
_("unknown root element for nw filter")); _("unknown root element for nw filter"));
goto cleanup; return NULL;
} }
if (!(ctxt = virXMLXPathContextNew(xml))) if (!(ctxt = virXMLXPathContextNew(xml)))
goto cleanup; return NULL;
ctxt->node = root; ctxt->node = root;
def = virNWFilterDefParseXML(ctxt); return virNWFilterDefParseXML(ctxt);
cleanup:
xmlXPathFreeContext(ctxt);
return def;
} }

View File

@ -430,12 +430,11 @@ virDomainSnapshotDefParseNode(xmlDocPtr xml,
bool *current, bool *current,
unsigned int flags) unsigned int flags)
{ {
xmlXPathContextPtr ctxt = NULL; VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
virDomainSnapshotDefPtr def = NULL;
if (!virXMLNodeNameEqual(root, "domainsnapshot")) { if (!virXMLNodeNameEqual(root, "domainsnapshot")) {
virReportError(VIR_ERR_XML_ERROR, "%s", _("domainsnapshot")); virReportError(VIR_ERR_XML_ERROR, "%s", _("domainsnapshot"));
goto cleanup; return NULL;
} }
if (flags & VIR_DOMAIN_SNAPSHOT_PARSE_VALIDATE) { if (flags & VIR_DOMAIN_SNAPSHOT_PARSE_VALIDATE) {
@ -445,19 +444,16 @@ virDomainSnapshotDefParseNode(xmlDocPtr xml,
abs_top_srcdir "/docs/schemas", abs_top_srcdir "/docs/schemas",
PKGDATADIR "/schemas"); PKGDATADIR "/schemas");
if (!schema) if (!schema)
goto cleanup; return NULL;
if (virXMLValidateAgainstSchema(schema, xml) < 0) if (virXMLValidateAgainstSchema(schema, xml) < 0)
goto cleanup; return NULL;
} }
if (!(ctxt = virXMLXPathContextNew(xml))) if (!(ctxt = virXMLXPathContextNew(xml)))
goto cleanup; return NULL;
ctxt->node = root; ctxt->node = root;
def = virDomainSnapshotDefParse(ctxt, caps, xmlopt, parseOpaque, current, flags); return virDomainSnapshotDefParse(ctxt, caps, xmlopt, parseOpaque, current, flags);
cleanup:
xmlXPathFreeContext(ctxt);
return def;
} }
virDomainSnapshotDefPtr virDomainSnapshotDefPtr

View File

@ -1013,25 +1013,21 @@ virStoragePoolDefPtr
virStoragePoolDefParseNode(xmlDocPtr xml, virStoragePoolDefParseNode(xmlDocPtr xml,
xmlNodePtr root) xmlNodePtr root)
{ {
xmlXPathContextPtr ctxt = NULL; VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
virStoragePoolDefPtr def = NULL;
if (!virXMLNodeNameEqual(root, "pool")) { if (!virXMLNodeNameEqual(root, "pool")) {
virReportError(VIR_ERR_XML_ERROR, virReportError(VIR_ERR_XML_ERROR,
_("unexpected root element <%s>, " _("unexpected root element <%s>, "
"expecting <pool>"), "expecting <pool>"),
root->name); root->name);
goto cleanup; return NULL;
} }
if (!(ctxt = virXMLXPathContextNew(xml))) if (!(ctxt = virXMLXPathContextNew(xml)))
goto cleanup; return NULL;
ctxt->node = root; ctxt->node = root;
def = virStoragePoolDefParseXML(ctxt); return virStoragePoolDefParseXML(ctxt);
cleanup:
xmlXPathFreeContext(ctxt);
return def;
} }
@ -1454,25 +1450,21 @@ virStorageVolDefParseNode(virStoragePoolDefPtr pool,
xmlNodePtr root, xmlNodePtr root,
unsigned int flags) unsigned int flags)
{ {
xmlXPathContextPtr ctxt = NULL; VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
virStorageVolDefPtr def = NULL;
if (!virXMLNodeNameEqual(root, "volume")) { if (!virXMLNodeNameEqual(root, "volume")) {
virReportError(VIR_ERR_XML_ERROR, virReportError(VIR_ERR_XML_ERROR,
_("unexpected root element <%s>, " _("unexpected root element <%s>, "
"expecting <volume>"), "expecting <volume>"),
root->name); root->name);
goto cleanup; return NULL;
} }
if (!(ctxt = virXMLXPathContextNew(xml))) if (!(ctxt = virXMLXPathContextNew(xml)))
goto cleanup; return NULL;
ctxt->node = root; ctxt->node = root;
def = virStorageVolDefParseXML(pool, ctxt, flags); return virStorageVolDefParseXML(pool, ctxt, flags);
cleanup:
xmlXPathFreeContext(ctxt);
return def;
} }