From: Florian Forster Date: Fri, 30 Apr 2010 15:54:26 +0000 (+0200) Subject: graph_list: Free old list when re-scanning. X-Git-Tag: v4.0.0~301 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=42951ae87738d2d359952459cae55237e6526ee1;p=collection4.git graph_list: Free old list when re-scanning. --- diff --git a/graph_list.c b/graph_list.c index baa8849..1306335 100644 --- a/graph_list.c +++ b/graph_list.c @@ -7,10 +7,43 @@ #include "graph_list.h" #include "common.h" +#define UPDATE_INTERVAL 10 + static graph_list_t *graph_list = NULL; static size_t graph_list_length = 0; static time_t gl_last_update = 0; +static void gl_clear_entry (graph_list_t *gl) /* {{{ */ +{ + if (gl == NULL) + return; + + free (gl->host); + free (gl->plugin); + free (gl->plugin_instance); + free (gl->type); + free (gl->type_instance); + + gl->host = NULL; + gl->plugin = NULL; + gl->plugin_instance = NULL; + gl->type = NULL; + gl->type_instance = NULL; +} /* }}} void gl_clear_entry */ + +static void gl_clear (void) +{ + size_t i; + + for (i = 0; i < graph_list_length; i++) + gl_clear_entry (graph_list + i); + + free (graph_list); + graph_list = NULL; + graph_list_length = 0; + gl_last_update = 0; +} /* }}} void gl_clear */ + static int gl_add_copy (graph_list_t *gl) /* {{{ */ { graph_list_t *ptr; @@ -166,9 +199,11 @@ int gl_update (void) /* {{{ */ now = time (NULL); - if ((gl_last_update + 2) >= now) + if ((gl_last_update + UPDATE_INTERVAL) >= now) return (0); + gl_clear (); + memset (&gl, 0, sizeof (gl)); gl.host = NULL; gl.plugin = NULL; diff --git a/graph_list.h b/graph_list.h index 9fa1372..517b1b4 100644 --- a/graph_list.h +++ b/graph_list.h @@ -16,6 +16,5 @@ typedef int (*gl_callback) (const graph_list_t *, void *); int gl_update (void); int gl_foreach (gl_callback callback, void *user_data); - #endif /* GRAPH_LIST_H */ /* vim: set sw=2 sts=2 et fdm=marker : */