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);

-- 


Reply via email to