From 4cf4b43534ed418ea65c89025bac3930fc710d67 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Sun, 5 Apr 2009 16:49:00 +0300 Subject: [PATCH] Fix memory leaks found by valgrind. Signed-off-by: Dan Carpenter --- check_locking.c | 1 + check_memory.c | 4 +--- smatch.c | 2 ++ 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/check_locking.c b/check_locking.c index 65530277..9e33e42f 100644 --- a/check_locking.c +++ b/check_locking.c @@ -375,6 +375,7 @@ static void clear_lists(void) FOR_EACH_PTR(all_returns, tmp) { free_trackers_and_list(&tmp->locked); free_trackers_and_list(&tmp->unlocked); + free(tmp); } END_FOR_EACH_PTR(tmp); __free_ptr_list((struct ptr_list **)&all_returns); } diff --git a/check_memory.c b/check_memory.c index 280bc0d9..c8d61a8c 100644 --- a/check_memory.c +++ b/check_memory.c @@ -298,11 +298,8 @@ static void match_function_call(struct expression *expr) struct expression *tmp; struct symbol *sym; char *name; - char *fn_name; struct sm_state *state; - fn_name = get_variable_from_expr(expr->fn, NULL); - FOR_EACH_PTR(expr->args, tmp) { tmp = strip_expr(tmp); name = get_variable_from_expr_complex(tmp, &sym); @@ -314,6 +311,7 @@ static void match_function_call(struct expression *expr) } } assign_parent(sym); + free_string(name); } END_FOR_EACH_PTR(tmp); } diff --git a/smatch.c b/smatch.c index 10e7f1d9..1356835f 100644 --- a/smatch.c +++ b/smatch.c @@ -105,6 +105,7 @@ static char *get_data_dir(char *arg0) } bin_dir = dirname(alloc_string(arg0)); strncpy(buf, bin_dir, 254); + free_string(bin_dir); buf[255] = '\0'; strncat(buf, "/smatch_data/", 254); dir = alloc_string(buf); @@ -133,5 +134,6 @@ int main(int argc, char **argv) register_function_hooks(-1); smatch(argc, argv); + free_string(data_dir); return 0; } -- 2.11.4.GIT