From 795d02785aa3f6d1638d79cfdaa5e45ed2ff8199 Mon Sep 17 00:00:00 2001 From: Quentin Young Date: Tue, 13 Sep 2016 19:55:37 +0000 Subject: lib: Fix various memory leaks Signed-off-by: Quentin Young --- lib/command_match.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'lib/command_match.c') diff --git a/lib/command_match.c b/lib/command_match.c index 75780de2c5..cd2200e0c0 100644 --- a/lib/command_match.c +++ b/lib/command_match.c @@ -101,14 +101,17 @@ command_match (struct graph *cmdgraph, struct graph_node *start = vector_slot (cmdgraph->nodes, 0); if ((*argv = command_match_r (start, vvline, 0))) // successful match { + struct listnode *head = listhead (*argv); + struct listnode *tail = listtail (*argv); + // delete dummy start node - list_delete_node (*argv, listhead (*argv)); + del_cmd_token ((struct cmd_token_t *) head->data); + list_delete_node (*argv, head); + // get cmd_element out of list tail - struct listnode *tail = listtail (*argv); *el = listgetdata (tail); - // delete list tail - tail->data = NULL; list_delete_node (*argv, tail); + // now argv is an ordered list of cmd_token matching the user // input, with each cmd_token->arg holding the corresponding input assert (*el); @@ -290,7 +293,7 @@ command_complete (struct graph *graph, unsigned int idx; for (idx = 0; idx < vector_active (vline) && next->count > 0; idx++) { - list_free (current); + list_delete (current); current = next; next = list_new(); @@ -334,8 +337,8 @@ command_complete (struct graph *graph, for (ALL_LIST_ELEMENTS_RO (next,node,gn)) listnode_add (*completions, gn->data); - list_free (current); - list_free (next); + list_delete (current); + list_delete (next); return matcher_rv; } -- cgit v1.2.3