summaryrefslogtreecommitdiffstats
path: root/eo_tokenizer.rl
diff options
context:
space:
mode:
Diffstat (limited to 'eo_tokenizer.rl')
-rw-r--r--eo_tokenizer.rl25
1 files changed, 21 insertions, 4 deletions
diff --git a/eo_tokenizer.rl b/eo_tokenizer.rl
index aebf832..ee66d05 100644
--- a/eo_tokenizer.rl
+++ b/eo_tokenizer.rl
@@ -339,20 +339,37 @@ _eo_tokenizer_param_free(Eo_Param_Def *param)
}
static void
+_eo_tokenizer_accessor_free(Eo_Accessor_Def *accessor)
+{
+ const char *s;
+ Eina_List *l;
+
+ if (accessor->comment)
+ eina_stringshare_del(accessor->comment);
+
+ EINA_LIST_FOREACH(accessor->legacies, l, s)
+ if (s) eina_stringshare_del(s);
+
+ _eo_tokenizer_ret_free(&accessor->ret);
+
+ free(accessor);
+}
+
+static void
_eo_tokenizer_property_def_free(Eo_Property_Def *prop)
{
Eo_Param_Def *param;
-
- _eo_tokenizer_ret_free(&prop->ret);
+ Eo_Accessor_Def *accessor;
if (prop->name)
eina_stringshare_del(prop->name);
- if (prop->comment)
- eina_stringshare_del(prop->comment);
EINA_LIST_FREE(prop->params, param)
_eo_tokenizer_param_free(param);
+ EINA_LIST_FREE(prop->accessors, accessor)
+ _eo_tokenizer_accessor_free(accessor);
+
free(prop);
}