From 6d66c9ae6bc4bf8130f89607013742ab6471466c Mon Sep 17 00:00:00 2001 From: Arnaldo Carvalho de Melo Date: Wed, 25 Mar 2009 12:00:30 -0300 Subject: [PATCH] type: Introduce type__delete Signed-off-by: Arnaldo Carvalho de Melo --- dwarves.c | 16 ++++++++++++++-- dwarves.h | 2 ++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/dwarves.c b/dwarves.c index f5202f8..b36697c 100644 --- a/dwarves.c +++ b/dwarves.c @@ -1425,13 +1425,25 @@ static size_t union__fprintf(struct type *self, const struct cu *cu, conf->suffix ? " " : "", conf->suffix ?: ""); } -void class__delete(struct class *self) +static void type__delete_class_members(struct type *self) { struct class_member *pos, *next; - type__for_each_member_safe(&self->type, pos, next) + type__for_each_data_member_safe(self, pos, next) { + list_del_init(&pos->tag.node); class_member__delete(pos); + } +} +void class__delete(struct class *self) +{ + type__delete_class_members(&self->type); + free(self); +} + +void type__delete(struct type *self) +{ + type__delete_class_members(self); free(self); } diff --git a/dwarves.h b/dwarves.h index 1cfc5f3..94c4596 100644 --- a/dwarves.h +++ b/dwarves.h @@ -670,6 +670,8 @@ static inline struct class *type__class(const struct type *self) return (struct class *)self; } +void type__delete(struct type *self); + /** * type__for_each_tag - iterate thru all the tags * @self: struct type instance to iterate