diff --git a/legacy/ecore/src/lib/ecore_con/ecore_con.c b/legacy/ecore/src/lib/ecore_con/ecore_con.c index 0d9345ac9c..7bd03588c8 100644 --- a/legacy/ecore/src/lib/ecore_con/ecore_con.c +++ b/legacy/ecore/src/lib/ecore_con/ecore_con.c @@ -2365,15 +2365,15 @@ _ecore_con_event_client_add_free(Ecore_Con_Server *svr, e = ev; if (e->client) { - e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, e); - if ((!e->client->event_count) && (e->client->delete_me)) - ecore_con_client_del(e->client); + e->client->event_count = eina_list_remove(e->client->event_count, e); if (e->client->host_server) { e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, ev); if ((!svr->event_count) && (svr->delete_me)) _ecore_con_server_free(svr); } + if ((!e->client->event_count) && (e->client->delete_me)) + ecore_con_client_del(e->client); } ecore_con_event_client_add_free(e); @@ -2391,15 +2391,15 @@ _ecore_con_event_client_del_free(Ecore_Con_Server *svr, e = ev; if (e->client) { - e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, e); - if ((!e->client->event_count) && (e->client->delete_me)) - ecore_con_client_del(e->client); + e->client->event_count = eina_list_remove(e->client->event_count, e); if (e->client->host_server) { e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, ev); if ((!svr->event_count) && (svr->delete_me)) _ecore_con_server_free(svr); } + if ((!e->client->event_count) && (e->client->delete_me)) + ecore_con_client_del(e->client); } ecore_con_event_client_del_free(e); _ecore_con_event_count--; @@ -2413,18 +2413,18 @@ _ecore_con_event_client_write_free(Ecore_Con_Server *svr, { if (e->client) { - e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, e); - if (((!e->client->event_count) && (e->client->delete_me)) || - ((e->client->host_server && - ((e->client->host_server->type & ECORE_CON_TYPE) == ECORE_CON_REMOTE_UDP || - (e->client->host_server->type & ECORE_CON_TYPE) == ECORE_CON_REMOTE_MCAST)))) - ecore_con_client_del(e->client); + e->client->event_count = eina_list_remove(e->client->event_count, e); if (e->client->host_server) { e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, e); if ((!svr->event_count) && (svr->delete_me)) _ecore_con_server_free(svr); } + if (((!e->client->event_count) && (e->client->delete_me)) || + ((e->client->host_server && + ((e->client->host_server->type & ECORE_CON_TYPE) == ECORE_CON_REMOTE_UDP || + (e->client->host_server->type & ECORE_CON_TYPE) == ECORE_CON_REMOTE_MCAST)))) + ecore_con_client_del(e->client); } ecore_con_event_client_write_free(e); _ecore_con_event_count--; @@ -2441,15 +2441,18 @@ _ecore_con_event_client_data_free(Ecore_Con_Server *svr, e = ev; if (e->client) { - e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, e); + e->client->event_count = eina_list_remove(e->client->event_count, e); + if (e->client->host_server) + { + e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, ev); + } + if ((!svr->event_count) && (svr->delete_me)) + _ecore_con_server_free(svr); if (((!e->client->event_count) && (e->client->delete_me)) || ((e->client->host_server && ((e->client->host_server->type & ECORE_CON_TYPE) == ECORE_CON_REMOTE_UDP || (e->client->host_server->type & ECORE_CON_TYPE) == ECORE_CON_REMOTE_MCAST)))) ecore_con_client_del(e->client); - e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, ev); - if ((!svr->event_count) && (svr->delete_me)) - _ecore_con_server_free(svr); } free(e->data); ecore_con_event_client_data_free(e);