diff options
Diffstat (limited to 'eo_tokenizer.rl')
-rw-r--r-- | eo_tokenizer.rl | 25 |
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); } |