barbieri pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=715c882073aace5c6f77916a11a442718fb91a40
commit 715c882073aace5c6f77916a11a442718fb91a40 Author: Gustavo Sverzut Barbieri <barbi...@profusion.mobi> Date: Wed Nov 23 12:14:57 2016 -0200 ecore_ipc: check if client is still alive efore emitting 'del' event. Using the ecore_ipc_server_example with -m/--single-message, if we deleted the client from the callback it would find a dead "cl". As the "cl" handle is removed from svr->clients before it's deleted, it's safe to check if we have that handle in the list before proceeding. --- src/lib/ecore_ipc/ecore_ipc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/ecore_ipc/ecore_ipc.c b/src/lib/ecore_ipc/ecore_ipc.c index d999d58..59e7db6 100644 --- a/src/lib/ecore_ipc/ecore_ipc.c +++ b/src/lib/ecore_ipc/ecore_ipc.c @@ -889,6 +889,7 @@ _ecore_ipc_event_client_del(void *data EINA_UNUSED, int ev_type EINA_UNUSED, voi Ecore_Ipc_Client *cl; cl = ecore_con_client_data_get(e->client); + if (!eina_list_data_find(svr->clients, cl)) return ECORE_CALLBACK_RENEW; cl->client = NULL; ecore_ipc_post_event_client_del(cl); --