Free memory allocated by counterdata+status to keep valgrind happy in the end

git-svn-id: http://repo.ham.fi/svn/aprsc/trunk@741 3ce903b1-3385-4e86-93cd-f9a4a239f7ac
This commit is contained in:
Heikki Hannikainen 2012-08-28 21:41:57 +00:00
parent d3de16120c
commit cfe01cc7b2
5 changed files with 26 additions and 0 deletions

View File

@ -714,6 +714,7 @@ int main(int argc, char **argv)
historydb_atend();
filter_wx_atend();
filter_entrycall_atend();
status_atend();
hlog(LOG_NOTICE, "Shut down.");
close_log(0);

View File

@ -73,6 +73,16 @@ struct cdata_t *cdata_alloc(const char *name)
return cd;
}
extern void cdata_free(struct cdata_t *cd)
{
if (cd->next)
cd->next->prevp = cd->prevp;
*cd->prevp = cd->next;
hfree(cd->name);
hfree(cd);
}
struct cdata_t *cdata_find_and_lock(const char *name)
{
struct cdata_t *cd = NULL;

View File

@ -18,6 +18,7 @@
struct cdata_t;
extern struct cdata_t *cdata_alloc(const char *name);
extern void cdata_free(struct cdata_t *cd);
extern void cdata_counter_sample(struct cdata_t *cd, long long value);
extern void cdata_gauge_sample(struct cdata_t *cd, long long value);
extern long cdata_get_last_value(const char *name);

View File

@ -391,8 +391,21 @@ void status_init(void)
cl->name = cdata_start[i][1];
cl->next = cdata_list;
cl->cd = cdata_alloc(n);
hfree(n);
cl->gauge = cdata_start[i][2][0] == 'g' ? 1 : 0;
cdata_list = cl;
i++;
}
}
void status_atend(void)
{
struct cdata_list_t *cl, *cl_next;
for (cl = cdata_list; (cl); cl = cl_next) {
cl_next = cl->next;
cdata_free(cl->cd);
hfree(cl);
}
}

View File

@ -19,5 +19,6 @@ extern char *status_json_string(int no_cache, int periodical);
extern int status_dump_file(void);
extern void status_init(void);
extern void status_atend(void);
#endif