Index: src/actions.c =================================================================== RCS file: /sources/ratpoison/ratpoison/src/actions.c,v retrieving revision 1.286 diff -u -r1.286 actions.c --- src/actions.c 17 May 2007 14:16:07 -0000 1.286 +++ src/actions.c 4 Jul 2007 20:13:05 -0000 @@ -96,6 +96,15 @@ } 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 @@ 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 (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) Index: src/actions.h =================================================================== RCS file: /sources/ratpoison/ratpoison/src/actions.h,v retrieving revision 1.91 diff -u -r1.91 actions.h --- src/actions.h 26 Nov 2006 23:54:36 -0000 1.91 +++ src/actions.h 4 Jul 2007 20:13:05 -0000 @@ -222,6 +222,7 @@ cmdret *cmdret_new (int success, char *fmt, ...); void cmdret_free (cmdret *ret); void keymap_free (rp_keymap *map); +void free_user_commands (void); void free_aliases (void); void free_keymaps (void); char *wingravity_to_string (int g); Index: src/main.c =================================================================== RCS file: /sources/ratpoison/ratpoison/src/main.c,v retrieving revision 1.133 diff -u -r1.133 main.c --- src/main.c 7 May 2007 18:37:54 -0000 1.133 +++ src/main.c 4 Jul 2007 20:13:05 -0000 @@ -770,10 +770,10 @@ free_keymaps (); free_aliases (); + free_user_commands (); free_bar (); - free_groups (); - free_window_stuff (); + free_groups (); for (i=0; inode); + groups_del_window (cur); + free_window (cur); + } + + list_for_each_safe_entry (cur, iter, tmp, &rp_mapped_window, node) + { + list_del (&cur->node); + groups_unmap_window (cur); + groups_del_window (cur); + free_window (cur); + } + numset_free (rp_window_numset); }