Use VIR_AUTO* for temporary locals and get rid of the 'cleanup' label.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/conf/secret_conf.c | 34 ++++++++++++++--------------------
1 file changed, 14 insertions(+), 20 deletions(-)
diff --git a/src/conf/secret_conf.c b/src/conf/secret_conf.c
index a7691da7b5..da61c6917e 100644
--- a/src/conf/secret_conf.c
+++ b/src/conf/secret_conf.c
@@ -131,33 +131,33 @@ virSecretDefParseUsage(xmlXPathContextPtr ctxt,
static virSecretDefPtr
secretXMLParseNode(xmlDocPtr xml, xmlNodePtr root)
{
- xmlXPathContextPtr ctxt = NULL;
- virSecretDefPtr def = NULL, ret = NULL;
- char *prop = NULL;
- char *uuidstr = NULL;
+ VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
+ VIR_AUTOPTR(virSecretDef) def = NULL;
+ VIR_AUTOFREE(char *) prop = NULL;
+ VIR_AUTOFREE(char *) uuidstr = NULL;
if (!virXMLNodeNameEqual(root, "secret")) {
virReportError(VIR_ERR_XML_ERROR,
_("unexpected root element <%s>, "
"expecting <secret>"),
root->name);
- goto cleanup;
+ return NULL;
}
if (!(ctxt = virXMLXPathContextNew(xml)))
- goto cleanup;
+ return NULL;
ctxt->node = root;
if (VIR_ALLOC(def) < 0)
- goto cleanup;
+ return NULL;
prop = virXPathString("string(./@ephemeral)", ctxt);
if (prop != NULL) {
if (virStringParseYesNo(prop, &def->isephemeral) < 0) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("invalid value of 'ephemeral'"));
- goto cleanup;
+ return NULL;
}
VIR_FREE(prop);
}
@@ -167,7 +167,7 @@ secretXMLParseNode(xmlDocPtr xml, xmlNodePtr root)
if (virStringParseYesNo(prop, &def->isprivate) < 0) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("invalid value of 'private'"));
- goto cleanup;
+ return NULL;
}
VIR_FREE(prop);
}
@@ -177,13 +177,13 @@ secretXMLParseNode(xmlDocPtr xml, xmlNodePtr root)
if (virUUIDGenerate(def->uuid) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("Failed to generate UUID"));
- goto cleanup;
+ return NULL;
}
} else {
if (virUUIDParse(uuidstr, def->uuid) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("malformed uuid element"));
- goto cleanup;
+ return NULL;
}
VIR_FREE(uuidstr);
}
@@ -191,15 +191,9 @@ secretXMLParseNode(xmlDocPtr xml, xmlNodePtr root)
def->description = virXPathString("string(./description)", ctxt);
if (virXPathNode("./usage", ctxt) != NULL
&& virSecretDefParseUsage(ctxt, def) < 0)
- goto cleanup;
- VIR_STEAL_PTR(ret, def);
-
- cleanup:
- VIR_FREE(prop);
- VIR_FREE(uuidstr);
- virSecretDefFree(def);
- xmlXPathFreeContext(ctxt);
- return ret;
+ return NULL;
+
+ VIR_RETURN_PTR(def);
}
static virSecretDefPtr
--
2.21.0