bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=6becc2b1796bad6f09264821259dcb8402a03b85
commit 6becc2b1796bad6f09264821259dcb8402a03b85 Author: Marcel Hollerbach <marcel-hollerb...@t-online.de> Date: Tue Feb 14 21:52:33 2017 +0100 e_exec: split up the free of the instance otherwise two calls to that free would not sent the event, but free the instance, undependend of the event beeing emitted or not. fix T4963 --- src/bin/e_exec.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/bin/e_exec.c b/src/bin/e_exec.c index 7bfcc36..5652507 100644 --- a/src/bin/e_exec.c +++ b/src/bin/e_exec.c @@ -616,21 +616,7 @@ _e_exec_instance_free(E_Exec_Instance *inst) ecore_event_add(E_EVENT_EXEC_DEL, inst, _e_exec_cb_exec_del_free, inst); return EINA_FALSE; } - if (inst->desktop) - e_exec_start_pending = eina_list_remove(e_exec_start_pending, - inst->desktop); - if (inst->expire_timer) ecore_timer_del(inst->expire_timer); - EINA_LIST_FREE(inst->clients, ec) - { - ec->exe_inst = NULL; - e_object_unref(E_OBJECT(ec)); - } - if (inst->desktop) efreet_desktop_free(inst->desktop); - if (!inst->phony) - { - if (inst->exe) ecore_exe_data_set(inst->exe, NULL); - } - free(inst); + return EINA_TRUE; } @@ -668,9 +654,27 @@ static void _e_exec_cb_exec_del_free(void *data, void *ev EINA_UNUSED) { E_Exec_Instance *inst = data; + E_Client *ec; inst->ref--; - _e_exec_instance_free(inst); + + if (inst->desktop) + e_exec_start_pending = eina_list_remove(e_exec_start_pending, + inst->desktop); + if (inst->expire_timer) ecore_timer_del(inst->expire_timer); + + EINA_LIST_FREE(inst->clients, ec) + { + ec->exe_inst = NULL; + e_object_unref(E_OBJECT(ec)); + } + + if (inst->desktop) efreet_desktop_free(inst->desktop); + if (!inst->phony) + { + if (inst->exe) ecore_exe_data_set(inst->exe, NULL); + } + free(inst); } static Eina_Bool --