From c8e7ad530e35305870471a40a870112495dc221e Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Tue, 31 Oct 2017 12:14:51 +0100 Subject: [PATCH] eolian: properly free parts --- src/Makefile_Eolian.am | 1 + src/lib/eolian/database_class.c | 2 ++ src/lib/eolian/database_part.c | 15 +++++++++++++++ src/lib/eolian/eolian_database.h | 2 ++ 4 files changed, 20 insertions(+) create mode 100644 src/lib/eolian/database_part.c diff --git a/src/Makefile_Eolian.am b/src/Makefile_Eolian.am index a067ec0b7b..e276e4480d 100644 --- a/src/Makefile_Eolian.am +++ b/src/Makefile_Eolian.am @@ -29,6 +29,7 @@ lib_eolian_libeolian_la_SOURCES = \ lib/eolian/database_constructor_api.c \ lib/eolian/database_event.c \ lib/eolian/database_event_api.c \ + lib/eolian/database_part.c \ lib/eolian/database_expr.c \ lib/eolian/database_expr_api.c \ lib/eolian/database_var.c \ diff --git a/src/lib/eolian/database_class.c b/src/lib/eolian/database_class.c index fc56325523..ac5e3055e9 100644 --- a/src/lib/eolian/database_class.c +++ b/src/lib/eolian/database_class.c @@ -10,6 +10,7 @@ database_class_del(Eolian_Class *cl) { Eolian_Function *fid; Eolian_Event *ev; + Eolian_Part *pt; Eolian_Implement *impl; Eolian_Constructor *ctor; const char *s; @@ -27,6 +28,7 @@ database_class_del(Eolian_Class *cl) EINA_LIST_FREE(cl->methods, fid) database_function_del(fid); EINA_LIST_FREE(cl->properties, fid) database_function_del(fid); EINA_LIST_FREE(cl->events, ev) database_event_del(ev); + EINA_LIST_FREE(cl->parts, pt) database_part_del(pt); if (cl->name) eina_stringshare_del(cl->name); if (cl->full_name) eina_stringshare_del(cl->full_name); diff --git a/src/lib/eolian/database_part.c b/src/lib/eolian/database_part.c new file mode 100644 index 0000000000..dca036aba5 --- /dev/null +++ b/src/lib/eolian/database_part.c @@ -0,0 +1,15 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include "eolian_database.h" + +void +database_part_del(Eolian_Part *part) +{ + if (!part) return; + if (part->name) eina_stringshare_del(part->name); + database_doc_del(part->doc); + free(part); +} diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h index 7d134d4282..05c153b8f2 100644 --- a/src/lib/eolian/eolian_database.h +++ b/src/lib/eolian/eolian_database.h @@ -358,5 +358,7 @@ void database_constructor_del(Eolian_Constructor *ctor); /* events */ void database_event_del(Eolian_Event *event); +/* parts */ +void database_part_del(Eolian_Part *part); #endif