[PATCH 5/7] qemuMigrationCapsToJSON: Refactor variable cleanup

Peter Krempa pkrempa at redhat.com
Mon Aug 24 12:05:57 UTC 2020


Use automatic memory allocation and move variables into correct scope to
simplify the code and remove the need for a 'error:' label.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/qemu/qemu_migration_params.c | 24 +++++++-----------------
 1 file changed, 7 insertions(+), 17 deletions(-)

diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_params.c
index c22362735a..9b6601367a 100644
--- a/src/qemu/qemu_migration_params.c
+++ b/src/qemu/qemu_migration_params.c
@@ -759,14 +759,12 @@ virJSONValuePtr
 qemuMigrationCapsToJSON(virBitmapPtr caps,
                         virBitmapPtr states)
 {
-    virJSONValuePtr json = NULL;
-    virJSONValuePtr cap = NULL;
+    g_autoptr(virJSONValue) json = virJSONValueNewArray();
     qemuMigrationCapability bit;
-    const char *name;
-
-    json = virJSONValueNewArray();

     for (bit = 0; bit < QEMU_MIGRATION_CAP_LAST; bit++) {
+        g_autoptr(virJSONValue) cap = virJSONValueNewObject();
+        const char *name = qemuMigrationCapabilityTypeToString(bit);
         bool supported = false;
         bool state = false;

@@ -776,27 +774,19 @@ qemuMigrationCapsToJSON(virBitmapPtr caps,

         ignore_value(virBitmapGetBit(states, bit, &state));

-        cap = virJSONValueNewObject();
-
-        name = qemuMigrationCapabilityTypeToString(bit);
         if (virJSONValueObjectAppendString(cap, "capability", name) < 0)
-            goto error;
+            return NULL;

         if (virJSONValueObjectAppendBoolean(cap, "state", state) < 0)
-            goto error;
+            return NULL;

         if (virJSONValueArrayAppend(json, cap) < 0)
-            goto error;
+            return NULL;

         cap = NULL;
     }

-    return json;
-
- error:
-    virJSONValueFree(json);
-    virJSONValueFree(cap);
-    return NULL;
+    return g_steal_pointer(&json);
 }


-- 
2.26.2




More information about the libvir-list mailing list