Fixed argument's argument property ownership

This commit is contained in:
Felipe Magno de Almeida 2015-09-25 17:27:23 -07:00
parent 462ecf69d3
commit 09a1e75dcb
3 changed files with 24 additions and 4 deletions

View File

@ -51,7 +51,19 @@ _eldbus_model_arguments_arguments_set(Eo *obj EINA_UNUSED,
{ {
DBG("(%p)", obj); DBG("(%p)", obj);
pd->arguments = arguments; Eldbus_Introspection_Argument* data;
EINA_LIST_FREE(pd->arguments, data)
{
free(data);
}
pd->arguments = eina_list_clone(arguments);
Eina_List* l;
EINA_LIST_FOREACH(pd->arguments, l, data)
{
void* cp = malloc(sizeof(Eldbus_Introspection_Argument));
memcpy(cp, data, sizeof(Eldbus_Introspection_Argument));
eina_list_data_set(l, cp);
}
} }
static const Eina_List* static const Eina_List*
@ -115,6 +127,12 @@ _eldbus_model_arguments_eo_base_destructor(Eo *obj, Eldbus_Model_Arguments_Data
eina_stringshare_del(pd->name); eina_stringshare_del(pd->name);
eldbus_proxy_unref(pd->proxy); eldbus_proxy_unref(pd->proxy);
Eldbus_Introspection_Argument* data;
EINA_LIST_FREE(pd->arguments, data)
{
free(data);
}
eo_do_super(obj, MY_CLASS, eo_destructor()); eo_do_super(obj, MY_CLASS, eo_destructor());
} }

View File

@ -15,8 +15,10 @@ class Eldbus.Model_Arguments (Eo.Base, Efl.Model.Base) {
[[Custom Eldbus_Model_Arguments constructor. [[Custom Eldbus_Model_Arguments constructor.
@since 1.16]] @since 1.16]]
set {} set {
get {} }
get {
}
values { values {
arguments: const(list<Eldbus_Introspection_Argument*>)* @optional; [[The introspected arguments]] arguments: const(list<Eldbus_Introspection_Argument*>)* @optional; [[The introspected arguments]]
} }

View File

@ -19,7 +19,7 @@ struct _Eldbus_Model_Arguments_Data
Eina_Hash *properties_hash; Eina_Hash *properties_hash;
Eina_Stringshare *name; Eina_Stringshare *name;
Eina_List *pending_list; Eina_List *pending_list;
const Eina_List *arguments; Eina_List *arguments;
Eina_Value tmp_value; Eina_Value tmp_value;
}; };