Use automatic memory freeing and remove the 'cleanup' label. Also make
it a bit more obvious that nothing happens if the 'old' list wasn't
present.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_process.c | 33 ++++++++++++---------------------
1 file changed, 12 insertions(+), 21 deletions(-)
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 30cfa4d485..1fd3230e97 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -3798,32 +3798,23 @@ qemuProcessUpdateDevices(virQEMUDriverPtr driver,
{
qemuDomainObjPrivatePtr priv = vm->privateData;
virDomainDeviceDef dev;
- const char **qemuDevices;
- char **old;
- char **tmp;
- int ret = -1;
+ g_auto(GStrv) old = g_steal_pointer(&priv->qemuDevices);
+ GStrv tmp;
- old = priv->qemuDevices;
- priv->qemuDevices = NULL;
if (qemuDomainUpdateDeviceList(driver, vm, QEMU_ASYNC_JOB_NONE) < 0)
- goto cleanup;
+ return -1;
- qemuDevices = (const char **)priv->qemuDevices;
- if ((tmp = old)) {
- while (*tmp) {
- if (!virStringListHasString(qemuDevices, *tmp) &&
- virDomainDefFindDevice(vm->def, *tmp, &dev, false) == 0
&&
- qemuDomainRemoveDevice(driver, vm, &dev) < 0) {
- goto cleanup;
- }
- tmp++;
- }
+ if (!old)
+ return 0;
+
+ for (tmp = old; *tmp; tmp++) {
+ if (!virStringListHasString((const char **) priv->qemuDevices, *tmp)
&&
+ virDomainDefFindDevice(vm->def, *tmp, &dev, false) == 0 &&
+ qemuDomainRemoveDevice(driver, vm, &dev))
+ return -1;
}
- ret = 0;
- cleanup:
- g_strfreev(old);
- return ret;
+ return 0;
}
static int
--
2.29.2