Use modern allocators, automatic memory feeing, and decrease the scope
of some variables to remove the 'error' label.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_migration_cookie.c | 27 ++++++++-------------------
1 file changed, 8 insertions(+), 19 deletions(-)
diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_cookie.c
index 8b5491e388..c2ae3ab6a7 100644
--- a/src/qemu/qemu_migration_cookie.c
+++ b/src/qemu/qemu_migration_cookie.c
@@ -882,27 +882,24 @@ qemuMigrationCookieGraphicsXMLParse(xmlXPathContextPtr ctxt)
static qemuMigrationCookieNetworkPtr
qemuMigrationCookieNetworkXMLParse(xmlXPathContextPtr ctxt)
{
- qemuMigrationCookieNetworkPtr optr;
+ g_autoptr(qemuMigrationCookieNetwork) optr = g_new0(qemuMigrationCookieNetwork, 1);
size_t i;
int n;
- xmlNodePtr *interfaces = NULL;
- char *vporttype;
+ g_autofree xmlNodePtr *interfaces = NULL;
VIR_XPATH_NODE_AUTORESTORE(ctxt)
- if (VIR_ALLOC(optr) < 0)
- goto error;
-
if ((n = virXPathNodeSet("./network/interface", ctxt, &interfaces))
< 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("missing interface information"));
- goto error;
+ return NULL;
}
optr->nnets = n;
- if (VIR_ALLOC_N(optr->net, optr->nnets) < 0)
- goto error;
+ optr->net = g_new0(qemuMigrationCookieNetData, optr->nnets);
for (i = 0; i < n; i++) {
+ g_autofree char *vporttype = NULL;
+
/* portdata is optional, and may not exist */
ctxt->node = interfaces[i];
optr->net[i].portdata = virXPathString("string(./portdata[1])",
ctxt);
@@ -910,20 +907,12 @@ qemuMigrationCookieNetworkXMLParse(xmlXPathContextPtr ctxt)
if (!(vporttype = virXMLPropString(interfaces[i], "vporttype"))) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("missing vporttype attribute in
migration data"));
- goto error;
+ return NULL;
}
optr->net[i].vporttype = virNetDevVPortTypeFromString(vporttype);
- VIR_FREE(vporttype);
}
- VIR_FREE(interfaces);
-
- return optr;
-
- error:
- VIR_FREE(interfaces);
- qemuMigrationCookieNetworkFree(optr);
- return NULL;
+ return g_steal_pointer(&optr);
}
--
2.26.2