somehow buf is freed once its put into an event.. but before event is

processed. don't allow this.
This commit is contained in:
Carsten Haitzler 2013-07-09 12:18:37 +09:00
parent f54a09ef83
commit fad576295e
1 changed files with 8 additions and 2 deletions

View File

@ -1492,6 +1492,12 @@ _ecore_ipc_event_server_data(void *data EINA_UNUSED, int ev_type EINA_UNUSED, vo
e2->response = msg.response;
e2->size = msg.size;
e2->data = buf;
if (buf == svr->buf)
{
svr->buf = NULL;
svr->buf_size = 0;
}
buf = NULL;
ecore_event_add(ECORE_IPC_EVENT_SERVER_DATA, e2,
_ecore_ipc_event_server_data_free,
NULL);
@ -1500,9 +1506,9 @@ _ecore_ipc_event_server_data(void *data EINA_UNUSED, int ev_type EINA_UNUSED, vo
}
svr->prev.i = msg;
offset += (s + msg.size);
if (svr->buf_size == offset)
if ((svr->buf_size == offset) && ((svr->buf) || (buf)))
{
free(svr->buf);
if (svr->buf) free(svr->buf);
svr->buf = NULL;
svr->buf_size = 0;
if (buf) free(buf);