[libvirt] [PATCH 11/22] qemu: Use VIR_AUTOFREE in virQEMUCapsLoadCPUModels

Jiri Denemark jdenemar at redhat.com
Thu Oct 3 14:00:29 UTC 2019


Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
---
 src/qemu/qemu_capabilities.c | 58 +++++++++++++++---------------------
 1 file changed, 24 insertions(+), 34 deletions(-)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 74920901b3..52a2594bf3 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -3423,15 +3423,10 @@ virQEMUCapsLoadCPUModels(virQEMUCapsPtr qemuCaps,
                          virDomainVirtType type)
 {
     virDomainCapsCPUModelsPtr cpus = NULL;
-    xmlNodePtr *nodes = NULL;
-    char *str = NULL;
+    VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
     size_t i;
     int n;
-    int ret = -1;
     xmlNodePtr node;
-    xmlNodePtr *blockerNodes = NULL;
-    char **blockers = NULL;
-    int nblockers;
 
     if (type == VIR_DOMAIN_VIRT_KVM)
         n = virXPathNodeSet("./cpu[@type='kvm']", ctxt, &nodes);
@@ -3441,16 +3436,14 @@ virQEMUCapsLoadCPUModels(virQEMUCapsPtr qemuCaps,
     if (n < 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("failed to parse qemu capabilities cpus"));
-        goto cleanup;
+        return -1;
     }
 
-    if (n == 0) {
-        ret = 0;
-        goto cleanup;
-    }
+    if (n == 0)
+        return 0;
 
     if (!(cpus = virDomainCapsCPUModelsNew(n)))
-        goto cleanup;
+        return -1;
 
     if (type == VIR_DOMAIN_VIRT_KVM)
         qemuCaps->kvmCPUModels = cpus;
@@ -3459,19 +3452,24 @@ virQEMUCapsLoadCPUModels(virQEMUCapsPtr qemuCaps,
 
     for (i = 0; i < n; i++) {
         int usable = VIR_DOMCAPS_CPU_USABLE_UNKNOWN;
-
-        if ((str = virXMLPropString(nodes[i], "usable")) &&
-            (usable = virDomainCapsCPUUsableTypeFromString(str)) < 0) {
+        VIR_AUTOFREE(char *) strUsable = NULL;
+        VIR_AUTOFREE(char *) name = NULL;
+        VIR_AUTOFREE(xmlNodePtr *) blockerNodes = NULL;
+        VIR_AUTOSTRINGLIST blockers = NULL;
+        int nblockers;
+
+        if ((strUsable = virXMLPropString(nodes[i], "usable")) &&
+            (usable = virDomainCapsCPUUsableTypeFromString(strUsable)) < 0) {
             virReportError(VIR_ERR_INTERNAL_ERROR,
-                           _("unknown value '%s' in attribute 'usable'"), str);
-            goto cleanup;
+                           _("unknown value '%s' in attribute 'usable'"),
+                           strUsable);
+            return -1;
         }
-        VIR_FREE(str);
 
-        if (!(str = virXMLPropString(nodes[i], "name"))) {
+        if (!(name = virXMLPropString(nodes[i], "name"))) {
             virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                            _("missing cpu name in QEMU capabilities cache"));
-            goto cleanup;
+            return -1;
         }
 
         node = ctxt->node;
@@ -3482,38 +3480,30 @@ virQEMUCapsLoadCPUModels(virQEMUCapsPtr qemuCaps,
         if (nblockers < 0) {
             virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                            _("failed to parse CPU blockers in QEMU capabilities"));
-            goto cleanup;
+            return -1;
         }
 
         if (nblockers > 0) {
             size_t j;
 
             if (VIR_ALLOC_N(blockers, nblockers + 1) < 0)
-                goto cleanup;
+                return -1;
 
             for (j = 0; j < nblockers; j++) {
                 if (!(blockers[j] = virXMLPropString(blockerNodes[j], "name"))) {
                     virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                                    _("missing blocker name in QEMU "
                                      "capabilities cache"));
-                    goto cleanup;
+                    return -1;
                 }
             }
-            VIR_FREE(blockerNodes);
         }
 
-        if (virDomainCapsCPUModelsAddSteal(cpus, &str, usable, &blockers) < 0)
-            goto cleanup;
+        if (virDomainCapsCPUModelsAddSteal(cpus, &name, usable, &blockers) < 0)
+            return -1;
     }
 
-    ret = 0;
-
- cleanup:
-    VIR_FREE(nodes);
-    VIR_FREE(str);
-    VIR_FREE(blockerNodes);
-    virStringListFree(blockers);
-    return ret;
+    return 0;
 }
 
 
-- 
2.23.0




More information about the libvir-list mailing list