diff options
-rw-r--r-- | src/lib/ecore_ipc/ecore_ipc.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/lib/ecore_ipc/ecore_ipc.c b/src/lib/ecore_ipc/ecore_ipc.c index 56de0ab43b..219c9503b6 100644 --- a/src/lib/ecore_ipc/ecore_ipc.c +++ b/src/lib/ecore_ipc/ecore_ipc.c | |||
@@ -461,7 +461,10 @@ ecore_ipc_server_del(Ecore_Ipc_Server *svr) | |||
461 | Ecore_Ipc_Client *cl; | 461 | Ecore_Ipc_Client *cl; |
462 | 462 | ||
463 | EINA_LIST_FREE(svr->clients, cl) | 463 | EINA_LIST_FREE(svr->clients, cl) |
464 | ecore_ipc_client_del(cl); | 464 | { |
465 | cl->svr = NULL; | ||
466 | ecore_ipc_client_del(cl); | ||
467 | } | ||
465 | if (svr->server) ecore_con_server_del(svr->server); | 468 | if (svr->server) ecore_con_server_del(svr->server); |
466 | servers = eina_list_remove(servers, svr); | 469 | servers = eina_list_remove(servers, svr); |
467 | 470 | ||
@@ -875,7 +878,8 @@ ecore_ipc_client_del(Ecore_Ipc_Client *cl) | |||
875 | { | 878 | { |
876 | svr = cl->svr; | 879 | svr = cl->svr; |
877 | if (cl->client) ecore_con_client_del(cl->client); | 880 | if (cl->client) ecore_con_client_del(cl->client); |
878 | svr->clients = eina_list_remove(svr->clients, cl); | 881 | if (ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER)) |
882 | svr->clients = eina_list_remove(svr->clients, cl); | ||
879 | if (cl->buf) free(cl->buf); | 883 | if (cl->buf) free(cl->buf); |
880 | ECORE_MAGIC_SET(cl, ECORE_MAGIC_NONE); | 884 | ECORE_MAGIC_SET(cl, ECORE_MAGIC_NONE); |
881 | free(cl); | 885 | free(cl); |