summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 04e3438)
raw | patch | inline | side by side (parent: 04e3438)
author | Florian Forster <octo@collectd.org> | |
Sat, 13 Jul 2013 06:20:28 +0000 (08:20 +0200) | ||
committer | Florian Forster <octo@collectd.org> | |
Sat, 13 Jul 2013 06:20:28 +0000 (08:20 +0200) |
This pops up every time I investigate memory leaks and it's annoying me.
src/plugin.c | patch | blob | history |
diff --git a/src/plugin.c b/src/plugin.c
index 809c140f7e0d1ee8f9047e39d5a7c17eed4cac8a..b0c82e397c4e7cd6aebf052d77b3b8489d6d57d0 100644 (file)
--- a/src/plugin.c
+++ b/src/plugin.c
(void *) callback, /* user_data = */ NULL));
} /* int plugin_register_shutdown */
+static void plugin_free_data_sets (void)
+{
+ void *key;
+ void *value;
+
+ if (data_sets == NULL)
+ return;
+
+ while (c_avl_pick (data_sets, &key, &value) == 0)
+ {
+ data_set_t *ds = value;
+ /* key is a pointer to ds->type */
+
+ sfree (ds->ds);
+ sfree (ds);
+ }
+
+ c_avl_destroy (data_sets);
+ data_sets = NULL;
+} /* void plugin_free_data_sets */
+
int plugin_register_data_set (const data_set_t *ds)
{
data_set_t *ds_copy;
destroy_all_callbacks (&list_notification);
destroy_all_callbacks (&list_shutdown);
destroy_all_callbacks (&list_log);
+
+ plugin_free_data_sets ();
} /* void plugin_shutdown_all */
int plugin_dispatch_missing (const value_list_t *vl) /* {{{ */