From bcb9dd3cdac6a73e4bcbf3d227a12760a0000f40 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 30 Jun 2011 03:16:56 +0000 Subject: [PATCH] fix ipc segv when other ecore exe callbacks are present SVN revision: 60854 --- src/bin/e_fm/e_fm_ipc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/bin/e_fm/e_fm_ipc.c b/src/bin/e_fm/e_fm_ipc.c index a8ad68a53..fa815288e 100644 --- a/src/bin/e_fm/e_fm_ipc.c +++ b/src/bin/e_fm/e_fm_ipc.c @@ -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);