diff options
author | Not Zed <NotZed@Ximian.com> | 2001-08-08 17:39:56 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2001-08-08 17:39:56 +0800 |
commit | bbfda4227e6790fa945368cb5d4cb3d24e4da3d7 (patch) | |
tree | 6a451fa92a651f0750f0001e49d8b38a28c90e96 /filter/rule-context.c | |
parent | e835aa2faf3bf45c930924aaa60a134cdd269c35 (diff) | |
download | gsoc2013-evolution-bbfda4227e6790fa945368cb5d4cb3d24e4da3d7.tar gsoc2013-evolution-bbfda4227e6790fa945368cb5d4cb3d24e4da3d7.tar.gz gsoc2013-evolution-bbfda4227e6790fa945368cb5d4cb3d24e4da3d7.tar.bz2 gsoc2013-evolution-bbfda4227e6790fa945368cb5d4cb3d24e4da3d7.tar.lz gsoc2013-evolution-bbfda4227e6790fa945368cb5d4cb3d24e4da3d7.tar.xz gsoc2013-evolution-bbfda4227e6790fa945368cb5d4cb3d24e4da3d7.tar.zst gsoc2013-evolution-bbfda4227e6790fa945368cb5d4cb3d24e4da3d7.zip |
Properly free the list of parts, and the private data.
2001-08-07 Not Zed <NotZed@Ximian.com>
* filter-rule.c (filter_rule_finalise): Properly free the list of
parts, and the private data.
(FilterRulePrivate): Remove unused 'parts' member.
* filter-option.c (free_option): For freeing options.
(filter_option_finalise): Free options list.
* filter-element.c (filter_element_finalise): free name.
* filter-input.c (filter_input_finalise): Free type and values
list.
* filter-context.c (filter_context_finalise): Free the actions.
* rule-context.c (rule_context_finalise): Remove the totally weird
arsed *_set_list free code.
(free_part_set):
(free_rule_set): Use this to free stuff using g_list_foreach.
(rule_context_finalise): Free the error string.
(rule_context_finalise): Free the rules and parts.
svn path=/trunk/; revision=11774
Diffstat (limited to 'filter/rule-context.c')
-rw-r--r-- | filter/rule-context.c | 51 |
1 files changed, 32 insertions, 19 deletions
diff --git a/filter/rule-context.c b/filter/rule-context.c index f24e9948be..b77d5646c9 100644 --- a/filter/rule-context.c +++ b/filter/rule-context.c @@ -103,37 +103,46 @@ rule_context_init(RuleContext * o) } static void +free_part_set(struct _part_set_map *map, void *data) +{ + g_free(map->name); + g_free(map); +} + +static void +free_rule_set(struct _rule_set_map *map, void *data) +{ + g_free(map->name); + g_free(map); +} + +static void rule_context_finalise(GtkObject * obj) { RuleContext *o = (RuleContext *) obj; - struct _part_set_map *psm; - struct _rule_set_map *rsm; - GList *next; - g_free(o->priv); - g_hash_table_destroy(o->part_set_map); + g_list_foreach(o->rule_set_list, (GFunc)free_rule_set, NULL); + g_list_free(o->rule_set_list); g_hash_table_destroy(o->rule_set_map); - for (; o->part_set_list; o->part_set_list = next) { - psm = o->part_set_list->data; - g_free (psm->name); - g_free (psm); - next = o->part_set_list->next; - g_list_free_1 (o->part_set_list); - } - for (; o->rule_set_list; o->rule_set_list = next) { - rsm = o->rule_set_list->data; - g_free (rsm->name); - g_free (rsm); - next = o->rule_set_list->next; - g_list_free_1 (o->rule_set_list); - } + g_list_foreach(o->part_set_list, (GFunc)free_part_set, NULL); + g_list_free(o->part_set_list); + g_hash_table_destroy(o->part_set_map); + + g_free(o->error); + + g_list_foreach(o->parts, (GFunc)gtk_object_unref, NULL); + g_list_free(o->parts); + g_list_foreach(o->rules, (GFunc)gtk_object_unref, NULL); + g_list_free(o->rules); if (o->system) xmlFreeDoc(o->system); if (o->user) xmlFreeDoc(o->user); + g_free(o->priv); + ((GtkObjectClass *) (parent_class))->finalize(obj); } @@ -157,6 +166,8 @@ rule_context_add_part_set(RuleContext * f, const char *setname, int part_type, R { struct _part_set_map *map; + g_assert(g_hash_table_lookup(f->part_set_map, setname) == NULL); + map = g_malloc0(sizeof(*map)); map->type = part_type; map->append = append; @@ -172,6 +183,8 @@ rule_context_add_rule_set(RuleContext * f, const char *setname, int rule_type, R { struct _rule_set_map *map; + g_assert(g_hash_table_lookup(f->rule_set_map, setname) == NULL); + map = g_malloc0(sizeof(*map)); map->type = rule_type; map->append = append; |