]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: Add helper to free domain list
authorPeter Krempa <pkrempa@redhat.com>
Wed, 27 Aug 2014 12:56:45 +0000 (14:56 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 28 Aug 2014 09:18:29 +0000 (11:18 +0200)
Add helper to free a list of virDomainPtrs without raising or clearing
errors. Use it in one place and prepare it for reuse.

src/conf/domain_conf.c
src/conf/domain_conf.h
src/libvirt_private.syms

index 48afb8c5c973a7d57dbe5e116fd321cd35cbabdf..388bbe1660ad4543efa491ebfc20f73361d318ce 100644 (file)
@@ -20020,6 +20020,29 @@ virDomainListPopulate(void *payload,
 }
 #undef MATCH
 
+
+/**
+ * virDomainListFree:
+ * @list: list of domains to free
+ *
+ * Frees a NULL-terminated list of domains without messing with currently
+ * set libvirt errors.
+ */
+void
+virDomainListFree(virDomainPtr *list)
+{
+    virDomainPtr *next;
+
+    if (!list)
+        return;
+
+    for (next = list; *next; next++)
+        virObjectUnref(*next);
+
+    VIR_FREE(list);
+}
+
+
 int
 virDomainObjListExport(virDomainObjListPtr doms,
                        virConnectPtr conn,
@@ -20028,7 +20051,6 @@ virDomainObjListExport(virDomainObjListPtr doms,
                        unsigned int flags)
 {
     int ret = -1;
-    size_t i;
 
     struct virDomainListData data = {
         conn, NULL,
@@ -20056,13 +20078,7 @@ virDomainObjListExport(virDomainObjListPtr doms,
     ret = data.ndomains;
 
  cleanup:
-    if (data.domains) {
-        int count = virHashSize(doms->objs);
-        for (i = 0; i < count; i++)
-            virObjectUnref(data.domains[i]);
-    }
-
-    VIR_FREE(data.domains);
+    virDomainListFree(data.domains);
     virObjectUnlock(doms);
     return ret;
 }
index aead903095b8e165fee78a6c1e4a0c4b80b6a3aa..a05254a7b7d18f62d2100abc3833883a74d393d4 100644 (file)
@@ -2707,6 +2707,8 @@ int virDomainObjListExport(virDomainObjListPtr doms,
                            virDomainObjListFilter filter,
                            unsigned int flags);
 
+void virDomainListFree(virDomainPtr *list);
+
 int
 virDomainDefMaybeAddController(virDomainDefPtr def,
                                int type,
index 6b9ee21c74a7f8a7714665e22b2734e3a071424d..71fc0638c39d510f2725ee5f0854c30a2ee4ed57 100644 (file)
@@ -311,6 +311,7 @@ virDomainLifecycleCrashTypeFromString;
 virDomainLifecycleCrashTypeToString;
 virDomainLifecycleTypeFromString;
 virDomainLifecycleTypeToString;
+virDomainListFree;
 virDomainLiveConfigHelperMethod;
 virDomainLockFailureTypeFromString;
 virDomainLockFailureTypeToString;