jypark pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=0a39fae0a2c27ec48b39caca3b00dc54bdffaa32
commit 0a39fae0a2c27ec48b39caca3b00dc54bdffaa32 Author: Ji-Youn Park <jy0703.p...@samsung.com> Date: Tue Sep 20 16:14:04 2016 +0830 ecore_con_local: fix memory leak. after socket function call, close file descriptor. --- src/lib/ecore_con/ecore_con_local.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/lib/ecore_con/ecore_con_local.c b/src/lib/ecore_con/ecore_con_local.c index 1453ea1..546b6e0 100644 --- a/src/lib/ecore_con/ecore_con_local.c +++ b/src/lib/ecore_con/ecore_con_local.c @@ -143,14 +143,14 @@ ecore_con_local_connect(Ecore_Con_Server *obj, return 0; if (fcntl(svr->fd, F_SETFL, O_NONBLOCK) < 0) - return 0; + goto error; if (fcntl(svr->fd, F_SETFD, FD_CLOEXEC) < 0) - return 0; + goto error; if (setsockopt(svr->fd, SOL_SOCKET, SO_REUSEADDR, (const void *)&curstate, sizeof(curstate)) < 0) - return 0; + goto error; socket_unix.sun_family = AF_UNIX; @@ -165,7 +165,7 @@ ecore_con_local_connect(Ecore_Con_Server *obj, svr->name); #else WRN("Your system does not support abstract sockets!"); - return 0; + goto error; #endif } else @@ -179,12 +179,12 @@ ecore_con_local_connect(Ecore_Con_Server *obj, socket_unix_len) < 0) { DBG("local connection failed: %s", strerror(errno)); - return 0; + goto error; } svr->path = strdup(buf); if (!svr->path) - return 0; + goto error; if (svr->type & ECORE_CON_SSL) { @@ -195,11 +195,15 @@ ecore_con_local_connect(Ecore_Con_Server *obj, ecore_main_fd_handler_add(svr->fd, ECORE_FD_READ, cb_done, obj, NULL, NULL); if (!svr->fd_handler) - return 0; + goto error; if (!svr->delete_me) ecore_con_event_server_add(obj); return 1; +error: + if (svr->fd) close(svr->fd); + svr->fd = -1; + return 0; #endif } --