Use modern allocators, automatic memory feeing, and decrease the scope of some variables to remove the 'error' and 'cleanup' labels. Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> --- src/qemu/qemu_migration_cookie.c | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_cookie.c index c2ae3ab6a7..1e0a1c3d7f 100644 --- a/src/qemu/qemu_migration_cookie.c +++ b/src/qemu/qemu_migration_cookie.c @@ -919,40 +919,37 @@ qemuMigrationCookieNetworkXMLParse(xmlXPathContextPtr ctxt) static qemuMigrationCookieNBDPtr qemuMigrationCookieNBDXMLParse(xmlXPathContextPtr ctxt) { - qemuMigrationCookieNBDPtr ret = NULL; - char *port = NULL, *capacity = NULL; + g_autoptr(qemuMigrationCookieNBD) ret = g_new0(qemuMigrationCookieNBD, 1); + g_autofree char *port = NULL; size_t i; int n; - xmlNodePtr *disks = NULL; + g_autofree xmlNodePtr *disks = NULL; VIR_XPATH_NODE_AUTORESTORE(ctxt) - if (VIR_ALLOC(ret) < 0) - goto error; - port = virXPathString("string(./nbd/@port)", ctxt); if (port && virStrToLong_i(port, NULL, 10, &ret->port) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Malformed nbd port '%s'"), port); - goto error; + return NULL; } /* Now check if source sent a list of disks to prealloc. We might be * talking to an older server, so it's not an error if the list is * missing. */ if ((n = virXPathNodeSet("./nbd/disk", ctxt, &disks)) > 0) { - if (VIR_ALLOC_N(ret->disks, n) < 0) - goto error; + ret->disks = g_new0(struct qemuMigrationCookieNBDDisk, n); ret->ndisks = n; for (i = 0; i < n; i++) { + g_autofree char *capacity = NULL; + ctxt->node = disks[i]; - VIR_FREE(capacity); if (!(ret->disks[i].target = virXPathString("string(./@target)", ctxt))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Malformed disk target")); - goto error; + return NULL; } capacity = virXPathString("string(./@capacity)", ctxt); @@ -962,20 +959,12 @@ qemuMigrationCookieNBDXMLParse(xmlXPathContextPtr ctxt) virReportError(VIR_ERR_INTERNAL_ERROR, _("Malformed disk capacity: '%s'"), NULLSTR(capacity)); - goto error; + return NULL; } } } - cleanup: - VIR_FREE(port); - VIR_FREE(capacity); - VIR_FREE(disks); - return ret; - error: - qemuMigrationCookieNBDFree(ret); - ret = NULL; - goto cleanup; + return g_steal_pointer(&ret); } -- 2.26.2