From c85b2e8ff5cffaef9520477b83e2134d9a85c1f6 Mon Sep 17 00:00:00 2001 From: cedric Date: Thu, 14 Oct 2010 16:45:17 +0000 Subject: [PATCH] * ecore: don't leak pipe. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@53410 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/ecore/ecore_pipe.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/lib/ecore/ecore_pipe.c b/src/lib/ecore/ecore_pipe.c index e41ef18..b4d647b 100644 --- a/src/lib/ecore/ecore_pipe.c +++ b/src/lib/ecore/ecore_pipe.c @@ -524,6 +524,8 @@ _ecore_pipe_read(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__) /* XXX What should we do here? */ ERR("Only read %zd bytes from the pipe, although" " we need to read %zd bytes.", ret, sizeof(p->len)); + _ecore_pipe_unhandle(p); + return ECORE_CALLBACK_CANCEL; } else if (ret == 0) { @@ -536,7 +538,10 @@ _ecore_pipe_read(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__) } #ifndef _WIN32 else if ((ret == PIPE_FD_ERROR) && ((errno == EINTR) || (errno == EAGAIN))) - return ECORE_CALLBACK_RENEW; + { + _ecore_pipe_unhandle(p); + return ECORE_CALLBACK_RENEW; + } else { ERR("An unhandled error (ret: %zd errno: %d [%s])" @@ -596,7 +601,9 @@ _ecore_pipe_read(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__) } #ifndef _WIN32 else if (ret == PIPE_FD_ERROR && (errno == EINTR || errno == EAGAIN)) - return ECORE_CALLBACK_RENEW; + { + return ECORE_CALLBACK_RENEW; + } else { ERR("An unhandled error (ret: %zd errno: %d)" -- 2.7.4