[PATCH 14/16] qemuAgentIOProcessLine: refactor cleanup

Peter Krempa pkrempa at redhat.com
Fri Dec 3 14:57:41 UTC 2021


Refactor the control flow so we can remove the cleanup label.

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

diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
index fc402e936f..c573e0fdf4 100644
--- a/src/qemu/qemu_agent.c
+++ b/src/qemu/qemu_agent.c
@@ -234,8 +234,7 @@ qemuAgentIOProcessLine(qemuAgent *agent,
                        const char *line,
                        qemuAgentMessage *msg)
 {
-    virJSONValue *obj = NULL;
-    int ret = -1;
+    g_autoptr(virJSONValue) obj = NULL;

     VIR_DEBUG("Line [%s]", line);

@@ -247,19 +246,19 @@ qemuAgentIOProcessLine(qemuAgent *agent,
             return 0;
         }

-        goto cleanup;
+        return -1;
     }

     if (virJSONValueGetType(obj) != VIR_JSON_TYPE_OBJECT) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("Parsed JSON reply '%s' isn't an object"), line);
-        goto cleanup;
+        return -1;
     }

     if (virJSONValueObjectHasKey(obj, "QMP") == 1) {
-        ret = 0;
+        return 0;
     } else if (virJSONValueObjectHasKey(obj, "event") == 1) {
-        ret = qemuAgentIOProcessEvent(agent, obj);
+        return qemuAgentIOProcessEvent(agent, obj);
     } else if (virJSONValueObjectHasKey(obj, "error") == 1 ||
                virJSONValueObjectHasKey(obj, "return") == 1) {
         if (msg) {
@@ -268,8 +267,7 @@ qemuAgentIOProcessLine(qemuAgent *agent,

                 if (virJSONValueObjectGetNumberUlong(obj, "return", &id) < 0) {
                     VIR_DEBUG("Ignoring delayed reply on sync");
-                    ret = 0;
-                    goto cleanup;
+                    return 0;
                 }

                 VIR_DEBUG("Guest returned ID: %llu", id);
@@ -277,8 +275,7 @@ qemuAgentIOProcessLine(qemuAgent *agent,
                 if (msg->id != id) {
                     VIR_DEBUG("Guest agent returned ID: %llu instead of %llu",
                               id, msg->id);
-                    ret = 0;
-                    goto cleanup;
+                    return 0;
                 }
             }
             msg->rxObject = g_steal_pointer(&obj);
@@ -287,15 +284,13 @@ qemuAgentIOProcessLine(qemuAgent *agent,
             /* we are out of sync */
             VIR_DEBUG("Ignoring delayed reply");
         }
-        ret = 0;
-    } else {
-        virReportError(VIR_ERR_INTERNAL_ERROR,
-                       _("Unknown JSON reply '%s'"), line);
+
+        return 0;
     }

- cleanup:
-    virJSONValueFree(obj);
-    return ret;
+    virReportError(VIR_ERR_INTERNAL_ERROR,
+                   _("Unknown JSON reply '%s'"), line);
+    return -1;
 }

 static int qemuAgentIOProcessData(qemuAgent *agent,
-- 
2.31.1




More information about the libvir-list mailing list