]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemuProcessUpdateDevices: Refactor cleanup and memory handling
authorPeter Krempa <pkrempa@redhat.com>
Wed, 3 Feb 2021 17:39:01 +0000 (18:39 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 11 Feb 2021 16:05:33 +0000 (17:05 +0100)
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@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_process.c

index 8d21e4521890a3907e6cb63b18e2263e9537fea7..08b3df7a4600861708c9f02da62f68432b4eec41 100644 (file)
@@ -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