Re: [PATCH 10/55] hyperv: use g_autoptr for Msvm_ProcessorSettingData in hypervConnectGetMaxVcpus

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

 



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

diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c
index 8b59dd05f7..6375f6b011 100644
--- a/src/hyperv/hyperv_driver.c
+++ b/src/hyperv/hyperv_driver.c
@@ -1514,10 +1514,9 @@ hypervConnectGetCapabilities(virConnectPtr conn)
  static int
  hypervConnectGetMaxVcpus(virConnectPtr conn, const char *type G_GNUC_UNUSED)
  {
-    int result = -1;
      hypervPrivate *priv = conn->privateData;
      g_auto(virBuffer) query = VIR_BUFFER_INITIALIZER;
-    Msvm_ProcessorSettingData *processorSettingData = NULL;
+    g_autoptr(Msvm_ProcessorSettingData) processorSettingData = NULL;
/* Get max processors definition */
      virBufferAddLit(&query,
@@ -1525,21 +1524,16 @@ hypervConnectGetMaxVcpus(virConnectPtr conn, const char *type G_GNUC_UNUSED)
                      "WHERE InstanceID LIKE 'Microsoft:Definition%Maximum'");
if (hypervGetWmiClass(Msvm_ProcessorSettingData, &processorSettingData) < 0)
-        goto cleanup;
+        return -1;
if (!processorSettingData) {
          virReportError(VIR_ERR_INTERNAL_ERROR,
                         _("Could not get maximum definition of Msvm_ProcessorSettingData for host %s"),
                         conn->uri->server);
-        goto cleanup;
+        return -1;
      }
- result = processorSettingData->data->VirtualQuantity;
-
- cleanup:
-    hypervFreeObject((hypervObject *)processorSettingData);
-
-    return result;
+    return processorSettingData->data->VirtualQuantity;


So. Something I'm unsure of - what you're doing here is returning a value that is stored in an object that is being auto-freed by the cleanup when the scope of the function is exited. I *guess* that the cleanup happens after copying the return value into the register that's used to return it to the caller? But I'm not sure, and it could just as easily be done in the opposite order. It's too late in the day (early in the next day, actually) for me to compile something and look at it with gdb to verify. Anybody else know the answer (or feel like experimenting)?


  }





[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