diff --git a/src/util/virlog.c b/src/util/virlog.c index 81ce73f3d4..06f9a602e1 100644 --- a/src/util/virlog.c +++ b/src/util/virlog.c @@ -239,11 +239,8 @@ virLogSetDefaultPriority(virLogPriority priority) static void virLogResetFilters(void) { - size_t i; - - for (i = 0; i < virLogNbFilters; i++) - virLogFilterFree(virLogFilters[i]); - VIR_FREE(virLogFilters); + virLogFilterListFree(virLogFilters, virLogNbFilters); + virLogFilters = NULL; virLogNbFilters = 0; virLogFiltersSerial++; } @@ -259,6 +256,28 @@ virLogFilterFree(virLogFilterPtr filter) VIR_FREE(filter); } + +/** + * virLogFilterFreeList: + * @list: list of filters to be freed + * @count: number of elements in the list + * + * Frees a list of filters. + */ +void +virLogFilterListFree(virLogFilterPtr *list, int count) +{ + size_t i; + + if (!list || count < 0) + return; + + for (i = 0; i < count; i++) + virLogFilterFree(list[i]); + VIR_FREE(list); +} + + /** * virLogDefineFilter: * @match: the pattern to match diff --git a/src/util/virlog.h b/src/util/virlog.h index cea6b8e2b9..f6ee8e6538 100644 --- a/src/util/virlog.h +++ b/src/util/virlog.h @@ -196,6 +196,7 @@ int virLogDefineOutput(virLogOutputFunc f, void virLogOutputFree(virLogOutputPtr output); void virLogOutputListFree(virLogOutputPtr *list, int count); void virLogFilterFree(virLogFilterPtr filter); +void virLogFilterListFree(virLogFilterPtr *list, int count); /* * Internal logging API