diff options
author | Nathan Scott <nathans@redhat.com> | 2021-09-03 12:11:31 +1000 |
---|---|---|
committer | BenBE <BenBE@geshi.org> | 2021-09-03 09:47:01 +0200 |
commit | c0c2bb98a23b649c55e5d8a55395073fdaa8d6fa (patch) | |
tree | 5d568468338201447d1396843e761d33c6729b37 /pcp/PCPDynamicMeter.c | |
parent | 9b30870eeca0e2fd29602451205834d753ed5905 (diff) |
Add completion handling for dynamic meters and columns
Be sure to free dynamic memory allocated for meters and
columns strings, no-op on platforms other than pcp.
Closes #774
Diffstat (limited to 'pcp/PCPDynamicMeter.c')
-rw-r--r-- | pcp/PCPDynamicMeter.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/pcp/PCPDynamicMeter.c b/pcp/PCPDynamicMeter.c index 430f41c9..ccea8134 100644 --- a/pcp/PCPDynamicMeter.c +++ b/pcp/PCPDynamicMeter.c @@ -283,6 +283,22 @@ void PCPDynamicMeters_init(PCPDynamicMeters* meters) { free(path); } +static void PCPDynamicMeter_free(ATTR_UNUSED ht_key_t key, void* value, ATTR_UNUSED void* data) { + PCPDynamicMeter* meter = (PCPDynamicMeter*) value; + for (size_t i = 0; i < meter->totalMetrics; i++) { + free(meter->metrics[i].name); + free(meter->metrics[i].label); + free(meter->metrics[i].suffix); + } + free(meter->metrics); + free(meter->super.caption); + free(meter->super.description); +} + +void PCPDynamicMeters_done(Hashtable* table) { + Hashtable_foreach(table, PCPDynamicMeter_free, NULL); +} + void PCPDynamicMeter_enable(PCPDynamicMeter* this) { for (size_t i = 0; i < this->totalMetrics; i++) PCPMetric_enable(this->metrics[i].id, true); |