summaryrefslogtreecommitdiff
path: root/src/actions.c
diff options
context:
space:
mode:
authorbrl <brl>2007-07-18 09:02:36 +0000
committerbrl <brl>2007-07-18 09:02:36 +0000
commit1ee117ef43bf221c9cc55e94a85c47aadf176f21 (patch)
tree26f9502b99a9b246522da8bd205333a289ff9af8 /src/actions.c
parent2ae15642de918f17a683329c517db21a1e5674a7 (diff)
downloadratpoison-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.c38
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)