diff --git a/src/lib/ecore_ipc/ecore_ipc.c b/src/lib/ecore_ipc/ecore_ipc.c index fb1187d52d..03be3cf38c 100644 --- a/src/lib/ecore_ipc/ecore_ipc.c +++ b/src/lib/ecore_ipc/ecore_ipc.c @@ -1467,8 +1467,7 @@ _ecore_ipc_event_server_data(void *data EINA_UNUSED, int ev_type EINA_UNUSED, vo Ecore_Ipc_Event_Server_Data *e2; int max; - if (buf) free(buf); - if (buf == svr->buf) svr->buf = NULL; + if (buf != svr->buf) free(buf); buf = NULL; max = svr->max_buf_size; if ((max < 0) || (msg.size <= max)) @@ -1503,6 +1502,16 @@ _ecore_ipc_event_server_data(void *data EINA_UNUSED, int ev_type EINA_UNUSED, vo _ecore_ipc_event_server_data_free, NULL); } + else + { + free(buf); + buf = NULL; + } + } + else + { + free(buf); + buf = NULL; } } svr->prev.i = msg;