]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
hyperv: Fix and improve hypervListAllDomains
authorMatthias Bolte <matthias.bolte@googlemail.com>
Sun, 9 Sep 2012 15:39:40 +0000 (17:39 +0200)
committerMatthias Bolte <matthias.bolte@googlemail.com>
Sat, 29 Sep 2012 19:06:46 +0000 (21:06 +0200)
Use MATCH for all flags checks.

hypervMsvmComputerSystemToDomain expects the domain pointer to the
initialized to NULL.

All items in doms up to the count-th one are valid, no need to double
check before freeing them.

src/hyperv/hyperv_driver.c

index bfedb2b6b5cec3a6e22bdb2a6e720f1542178bac..4aed41fe520bba5200241c1bd9ac7b92e1267a7e 100644 (file)
@@ -1302,13 +1302,14 @@ hypervListAllDomains(virConnectPtr conn,
     virBufferAddLit(&query, MSVM_COMPUTERSYSTEM_WQL_VIRTUAL);
 
     /* construct query with filter depending on flags */
-    if (!(flags & VIR_CONNECT_LIST_DOMAINS_ACTIVE &&
-          flags & VIR_CONNECT_LIST_DOMAINS_INACTIVE)) {
-        if (flags & VIR_CONNECT_LIST_DOMAINS_ACTIVE) {
+    if (!(MATCH(VIR_CONNECT_LIST_DOMAINS_ACTIVE) &&
+          MATCH(VIR_CONNECT_LIST_DOMAINS_INACTIVE))) {
+        if (MATCH(VIR_CONNECT_LIST_DOMAINS_ACTIVE)) {
             virBufferAddLit(&query, "and ");
             virBufferAddLit(&query, MSVM_COMPUTERSYSTEM_WQL_ACTIVE);
         }
-        if (flags & VIR_CONNECT_LIST_DOMAINS_INACTIVE) {
+
+        if (MATCH(VIR_CONNECT_LIST_DOMAINS_INACTIVE)) {
             virBufferAddLit(&query, "and ");
             virBufferAddLit(&query, MSVM_COMPUTERSYSTEM_WQL_INACTIVE);
         }
@@ -1358,14 +1359,16 @@ hypervListAllDomains(virConnectPtr conn,
             continue;
         }
 
-        if (VIR_RESIZE_N(doms, ndoms, count,  2) < 0)
+        if (VIR_RESIZE_N(doms, ndoms, count, 2) < 0)
             goto no_memory;
 
+        domain = NULL;
+
         if (hypervMsvmComputerSystemToDomain(conn, computerSystem,
                                              &domain) < 0)
             goto cleanup;
 
-       doms[count++] = domain;
+        doms[count++] = domain;
     }
 
     if (doms)
@@ -1376,13 +1379,14 @@ hypervListAllDomains(virConnectPtr conn,
 cleanup:
     if (doms) {
         for (i = 0; i < count; ++i) {
-            if (doms[i])
-                virDomainFree(doms[i]);
+            virDomainFree(doms[i]);
         }
+
+        VIR_FREE(doms);
     }
 
-    VIR_FREE(doms);
     hypervFreeObject(priv, (hypervObject *)computerSystemList);
+
     return ret;
 
 no_memory: