fix ipc segv when other ecore exe callbacks are present

SVN revision: 60854
This commit is contained in:
Mike Blumenkrantz 2011-06-30 03:16:56 +00:00
parent 2b8c0c4d6e
commit bcb9dd3cda
1 changed files with 3 additions and 2 deletions

View File

@ -810,6 +810,7 @@ _e_fm_ipc_slave_data_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
if (!e) return ECORE_CALLBACK_PASS_ON;
slave = ecore_exe_data_get(e->exe);
if (!slave) return ECORE_CALLBACK_RENEW;
sdata = e->data;
ssize = e->size;
@ -859,6 +860,7 @@ _e_fm_ipc_slave_error_cb(void *data __UNUSED__, int type __UNUSED__, void *event
if (!e) return 1;
slave = ecore_exe_data_get(e->exe);
if (!slave) return ECORE_CALLBACK_RENEW;
printf("EFM: Data from STDERR of slave #%d: %.*s", slave->id, e->size, (char *)e->data);
@ -874,9 +876,8 @@ _e_fm_ipc_slave_del_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
if (!e) return 1;
slave = ecore_exe_data_get(e->exe);
_e_fm_ipc_client_send(slave->id, E_FM_OP_QUIT, NULL, 0);
if (!slave) return 1;
_e_fm_ipc_client_send(slave->id, E_FM_OP_QUIT, NULL, 0);
_e_fm_ipc_slaves = eina_list_remove(_e_fm_ipc_slaves, (void *)slave);
free(slave);