summaryrefslogtreecommitdiff
path: root/libps/procstat.c
diff options
context:
space:
mode:
authorJeremie Koenig <jk@jk.fr.eu.org>2010-08-25 14:31:56 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2010-08-26 23:48:34 +0200
commit862bdf3d26ac8fd61c7f7f6664bf0999774be434 (patch)
tree99906094f64673e84b153c2f7ae83d3c02c0fae0 /libps/procstat.c
parent9ad43da4ff755b8e48e1b2f51271766061541dac (diff)
libps (_proc_stat_free): Fix memory leak
The thread_waits field was never freed; this change adds the code to do so if the corresponding flag is set. Users are also warned of the consequences, namely, that they should not free process proc_stats before all their associated thread ones are gone, since the latter may reference the former's thread_waits field. However, with the normal interface (ie. ps_context_free), all proc_stats are freed at once, so this is not an issue. * libps/procstat.c (_proc_stat_free): Free ps->thread_waits if PSTAT_THREAD_WAITS flag is set. * libps/ps.h (_proc_stat_free): Document that thread proc_stats must be freed before process proc_stat can be.
Diffstat (limited to 'libps/procstat.c')
-rw-r--r--libps/procstat.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/libps/procstat.c b/libps/procstat.c
index 33a01cc1..0717065c 100644
--- a/libps/procstat.c
+++ b/libps/procstat.c
@@ -1058,6 +1058,8 @@ _proc_stat_free (ps)
MFREEMEM (PSTAT_ENV, env, ps->env_len, ps->env_vm_alloced, 0, char);
MFREEMEM (PSTAT_TASK_EVENTS, task_events_info, ps->task_events_info_size,
0, &ps->task_events_info_buf, char);
+ MFREEMEM (PSTAT_THREAD_WAITS, thread_waits, ps->thread_waits_len,
+ ps->thread_waits_vm_alloced, 0, char);
FREE (ps);
}