Re: [PATCH 51/55] hyperv: use GLib auto-cleanup in hypervEnumAndPull

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/21/21 1:51 PM, Matt Coleman wrote:
Signed-off-by: Matt Coleman <matt@xxxxxxxxx>
---
  src/hyperv/hyperv_wmi.c | 42 ++++++++++++++---------------------------
  1 file changed, 14 insertions(+), 28 deletions(-)

diff --git a/src/hyperv/hyperv_wmi.c b/src/hyperv/hyperv_wmi.c
index c1325b2ccc..b68b555a3b 100644
--- a/src/hyperv/hyperv_wmi.c
+++ b/src/hyperv/hyperv_wmi.c
@@ -903,14 +903,13 @@ int
  hypervEnumAndPull(hypervPrivate *priv, hypervWqlQueryPtr wqlQuery,
                    hypervObject **list)
  {
-    int result = -1;
      WsSerializerContextH serializerContext;
-    client_opt_t *options = NULL;
-    char *query_string = NULL;
+    g_autoptr(client_opt_t) options = NULL;
+    g_autofree char *query_string = NULL;
      hypervWmiClassInfoPtr wmiInfo = wqlQuery->info;
-    filter_t *filter = NULL;
-    WsXmlDocH response = NULL;
-    char *enumContext = NULL;
+    g_autoptr(filter_t) filter = NULL;
+    g_auto(WsXmlDocH) response = NULL;
+    g_autofree char *enumContext = NULL;
      g_autoptr(hypervObject) head = NULL;
      hypervObject *tail = NULL;
      WsXmlNodeH node = NULL;
@@ -931,7 +930,7 @@ hypervEnumAndPull(hypervPrivate *priv, hypervWqlQueryPtr wqlQuery,
      if (options == NULL) {
          virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                         _("Could not initialize options"));
-        goto cleanup;
+        return -1;
      }
filter = filter_create_simple(WSM_WQL_FILTER_DIALECT, query_string);
@@ -939,14 +938,14 @@ hypervEnumAndPull(hypervPrivate *priv, hypervWqlQueryPtr wqlQuery,
      if (filter == NULL) {
          virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                         _("Could not create filter"));
-        goto cleanup;
+        return -1;
      }
response = wsmc_action_enumerate(priv->client, wmiInfo->rootUri, options,
                                       filter);
if (hypervVerifyResponse(priv->client, response, "enumeration") < 0)
-        goto cleanup;
+        return -1;
enumContext = wsmc_get_enum_context(response); @@ -960,14 +959,14 @@ hypervEnumAndPull(hypervPrivate *priv, hypervWqlQueryPtr wqlQuery,
                                      filter, enumContext);
if (hypervVerifyResponse(priv->client, response, "pull") < 0)
-            goto cleanup;
+            return -1;
node = ws_xml_get_soap_body(response); if (node == NULL) {
              virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                             _("Could not lookup SOAP body"));
-            goto cleanup;
+            return -1;
          }
node = ws_xml_get_child(node, 0, XML_NS_ENUMERATION, WSENUM_PULL_RESP);
@@ -975,7 +974,7 @@ hypervEnumAndPull(hypervPrivate *priv, hypervWqlQueryPtr wqlQuery,
          if (node == NULL) {
              virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                             _("Could not lookup pull response"));
-            goto cleanup;
+            return -1;
          }
node = ws_xml_get_child(node, 0, XML_NS_ENUMERATION, WSENUM_ITEMS);
@@ -983,7 +982,7 @@ hypervEnumAndPull(hypervPrivate *priv, hypervWqlQueryPtr wqlQuery,
          if (node == NULL) {
              virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                             _("Could not lookup pull response items"));
-            goto cleanup;
+            return -1;
          }
if (ws_xml_get_child(node, 0, wmiInfo->resourceUri,
@@ -996,7 +995,7 @@ hypervEnumAndPull(hypervPrivate *priv, hypervWqlQueryPtr wqlQuery,
          if (data == NULL) {
              virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                             _("Could not deserialize pull response item"));
-            goto cleanup;
+            return -1;
          }
object = g_new0(hypervObject, 1);
@@ -1022,20 +1021,7 @@ hypervEnumAndPull(hypervPrivate *priv, hypervWqlQueryPtr wqlQuery,
      *list = head;
      head = NULL;
- result = 0;
-
- cleanup:
-    if (options != NULL)
-        wsmc_options_destroy(options);
-
-    if (filter != NULL)
-        filter_destroy(filter);


And again.


-
-    VIR_FREE(query_string);
-    ws_xml_destroy_doc(response);
-    VIR_FREE(enumContext);
-
-    return result;
+    return 0;
  }





[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux