If we use glib alloc functions, we can drop the 'cleanup' label and @rv variable and also simplify the code a bit. Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- src/qemu/qemu_driver.c | 40 +++++++++++----------------------------- 1 file changed, 11 insertions(+), 29 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 2bc2081d0b..2d2a83cd8b 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -21555,9 +21555,6 @@ qemuGetDHCPInterfaces(virDomainObjPtr vm, g_autoptr(virConnect) conn = NULL; virDomainInterfacePtr *ifaces_ret = NULL; size_t ifaces_count = 0; - int rv = -1; - int n_leases = 0; - virNetworkDHCPLeasePtr *leases = NULL; size_t i; if (!(conn = virGetConnectNetwork())) @@ -21566,6 +21563,8 @@ qemuGetDHCPInterfaces(virDomainObjPtr vm, for (i = 0; i < vm->def->nnets; i++) { g_autoptr(virNetwork) network = NULL; char macaddr[VIR_MAC_STRING_BUFLEN]; + virNetworkDHCPLeasePtr *leases = NULL; + int n_leases = 0; virDomainInterfacePtr iface = NULL; size_t j; @@ -21584,21 +21583,15 @@ qemuGetDHCPInterfaces(virDomainObjPtr vm, goto error; if (n_leases) { - if (VIR_EXPAND_N(ifaces_ret, ifaces_count, 1) < 0) - goto error; - - if (VIR_ALLOC(ifaces_ret[ifaces_count - 1]) < 0) - goto error; + ifaces_ret = g_renew(typeof(*ifaces_ret), ifaces_ret, ifaces_count + 1); + ifaces_ret[ifaces_count] = g_new0(typeof(**ifaces_ret), 1); + iface = ifaces_ret[ifaces_count]; + ifaces_count++; - iface = ifaces_ret[ifaces_count - 1]; /* Assuming each lease corresponds to a separate IP */ iface->naddrs = n_leases; - - if (VIR_ALLOC_N(iface->addrs, iface->naddrs) < 0) - goto error; - + iface->addrs = g_new0(typeof(*iface->addrs), iface->naddrs); iface->name = g_strdup(vm->def->nets[i]->ifname); - iface->hwaddr = g_strdup(macaddr); } @@ -21607,28 +21600,17 @@ qemuGetDHCPInterfaces(virDomainObjPtr vm, virDomainIPAddressPtr ip_addr = &iface->addrs[j]; ip_addr->addr = g_strdup(lease->ipaddr); - ip_addr->type = lease->type; ip_addr->prefix = lease->prefix; - } - for (j = 0; j < n_leases; j++) - virNetworkDHCPLeaseFree(leases[j]); + virNetworkDHCPLeaseFree(lease); + } VIR_FREE(leases); } *ifaces = g_steal_pointer(&ifaces_ret); - rv = ifaces_count; - - cleanup: - if (leases) { - for (i = 0; i < n_leases; i++) - virNetworkDHCPLeaseFree(leases[i]); - } - VIR_FREE(leases); - - return rv; + return ifaces_count; error: if (ifaces_ret) { @@ -21637,7 +21619,7 @@ qemuGetDHCPInterfaces(virDomainObjPtr vm, } VIR_FREE(ifaces_ret); - goto cleanup; + return -1; } -- 2.23.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list