eolian: properly free parts

This commit is contained in:
Daniel Kolesa 2017-10-31 12:14:51 +01:00
parent 0a92c0c61f
commit c8e7ad530e
4 changed files with 20 additions and 0 deletions

View File

@ -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 \

View File

@ -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);

View File

@ -0,0 +1,15 @@
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <Eina.h>
#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);
}

View File

@ -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