eolian: properly free parts
authorDaniel Kolesa <d.kolesa@osg.samsung.com>
Tue, 31 Oct 2017 11:14:51 +0000 (12:14 +0100)
committerDaniel Kolesa <d.kolesa@osg.samsung.com>
Tue, 31 Oct 2017 11:15:23 +0000 (12:15 +0100)
src/Makefile_Eolian.am
src/lib/eolian/database_class.c
src/lib/eolian/database_part.c [new file with mode: 0644]
src/lib/eolian/eolian_database.h

index a067ec0..e276e44 100644 (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 \
index fc56325..ac5e305 100644 (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);
diff --git a/src/lib/eolian/database_part.c b/src/lib/eolian/database_part.c
new file mode 100644 (file)
index 0000000..dca036a
--- /dev/null
@@ -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);
+}
index 7d134d4..05c153b 100644 (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