From e41512246c10e28f0eddf69070e35bce818064b9 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Wed, 27 Aug 2014 14:56:45 +0200 Subject: [PATCH] conf: Add helper to free domain list 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 | 32 ++++++++++++++++++++++++-------- src/conf/domain_conf.h | 2 ++ src/libvirt_private.syms | 1 + 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 48afb8c5c9..388bbe1660 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -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; } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index aead903095..a05254a7b7 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2707,6 +2707,8 @@ int virDomainObjListExport(virDomainObjListPtr doms, virDomainObjListFilter filter, unsigned int flags); +void virDomainListFree(virDomainPtr *list); + int virDomainDefMaybeAddController(virDomainDefPtr def, int type, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 6b9ee21c74..71fc0638c3 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -311,6 +311,7 @@ virDomainLifecycleCrashTypeFromString; virDomainLifecycleCrashTypeToString; virDomainLifecycleTypeFromString; virDomainLifecycleTypeToString; +virDomainListFree; virDomainLiveConfigHelperMethod; virDomainLockFailureTypeFromString; virDomainLockFailureTypeToString; -- GitLab