diff options
author | brl <brl> | 2007-07-18 09:02:36 +0000 |
---|---|---|
committer | brl <brl> | 2007-07-18 09:02:36 +0000 |
commit | 1ee117ef43bf221c9cc55e94a85c47aadf176f21 (patch) | |
tree | 26f9502b99a9b246522da8bd205333a289ff9af8 /src/actions.c | |
parent | 2ae15642de918f17a683329c517db21a1e5674a7 (diff) | |
download | ratpoison-1ee117ef43bf221c9cc55e94a85c47aadf176f21.zip |
free more stuff at termination time to make valgrind output better readable
Diffstat (limited to 'src/actions.c')
-rw-r--r-- | src/actions.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/actions.c b/src/actions.c index c1c8b4f..0de31ed 100644 --- a/src/actions.c +++ b/src/actions.c @@ -96,6 +96,15 @@ add_set_var (char *name, cmdret * (*fn)(struct cmdarg **), int nargs, ...) } static void +set_var_free (struct set_var *var) +{ + if (var == NULL) + return; + free(var->args); + free(var); +} + +static void init_set_vars(void) { add_set_var ("resizeunit", set_resizeunit, 1, "", arg_NUMBER); @@ -157,6 +166,16 @@ add_command (char *name, cmdret * (*fn)(int, struct cmdarg **), int nargs, int i list_add (&cmd->node, &user_commands); } +static void +user_command_free(struct user_command *cmd) +{ + if (cmd == NULL ) + return; + + free(cmd->args); + free(cmd); +} + void init_user_commands(void) { @@ -840,6 +859,25 @@ free_aliases (void) free (alias_list); } +void +free_user_commands (void) +{ + struct user_command *cur; + struct set_var *var; + struct list_head *tmp, *iter; + + list_for_each_safe_entry (cur, iter, tmp, &user_commands, node) + { + list_del (&cur->node); + user_command_free (cur); + } + list_for_each_safe_entry (var, iter, tmp, &set_vars, node) + { + list_del (&var->node); + set_var_free (var); + } +} + /* return a KeySym from a string that contains either a hex value or an X keysym description */ static int string_to_keysym (char *str) |