diff options
author | Mike Blumenkrantz <zmike@samsung.com> | 2020-03-17 12:03:03 -0400 |
---|---|---|
committer | Marcel Hollerbach <mail@marcel-hollerbach.de> | 2020-03-25 22:13:02 +0100 |
commit | c697965a8c72e13be834b5a1e10dc5ff8d4766ea (patch) | |
tree | 140b65f8eab38267d850275bed14397d4d8dcc12 | |
parent | e8eb67a557485caaca3733ae66f4da4c36517134 (diff) | |
download | efl-c697965a8c72e13be834b5a1e10dc5ff8d4766ea.tar.gz |
ecore/audio: free vio on in/out object destruction
ensure we don't leak these since that means we also leak the user's free
data and callback
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11527
-rw-r--r-- | src/lib/ecore_audio/ecore_audio_obj_in.c | 8 | ||||
-rw-r--r-- | src/lib/ecore_audio/ecore_audio_obj_out.c | 4 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/lib/ecore_audio/ecore_audio_obj_in.c b/src/lib/ecore_audio/ecore_audio_obj_in.c index dcb792c8af..64ce45ba54 100644 --- a/src/lib/ecore_audio/ecore_audio_obj_in.c +++ b/src/lib/ecore_audio/ecore_audio_obj_in.c @@ -187,9 +187,15 @@ _ecore_audio_in_efl_object_constructor(Eo *eo_obj, Ecore_Audio_Input *obj) EOLIAN static void _ecore_audio_in_efl_object_destructor(Eo *eo_obj, Ecore_Audio_Input *obj) { + Ecore_Audio_Object *ea_obj = efl_data_scope_get(eo_obj, ECORE_AUDIO_CLASS); if(obj->output) - ecore_audio_obj_out_input_detach(obj->output, eo_obj); + { + if (!ecore_audio_obj_out_input_detach(obj->output, eo_obj)) + ERR("Failed to detach output %p!", obj->output); + } + if (ea_obj->vio) + _free_vio(ea_obj); efl_destructor(efl_super(eo_obj, MY_CLASS)); } diff --git a/src/lib/ecore_audio/ecore_audio_obj_out.c b/src/lib/ecore_audio/ecore_audio_obj_out.c index 4c05b218da..7a51e8c73d 100644 --- a/src/lib/ecore_audio/ecore_audio_obj_out.c +++ b/src/lib/ecore_audio/ecore_audio_obj_out.c @@ -147,11 +147,13 @@ _ecore_audio_out_efl_object_destructor(Eo *eo_obj, Ecore_Audio_Output *obj) { Eina_List *cur, *tmp; Eo *in; + Ecore_Audio_Object *ea_obj = efl_data_scope_get(eo_obj, ECORE_AUDIO_CLASS); EINA_LIST_FOREACH_SAFE(obj->inputs, cur, tmp, in) { ecore_audio_obj_out_input_detach(eo_obj, in); } - + if (ea_obj->vio) + _free_vio(ea_obj); efl_destructor(efl_super(eo_obj, MY_CLASS)); } |