summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoram Park <boram1288.park@samsung.com>2015-09-23 09:23:21 -0400
committerChris Michael <cp.michael@samsung.com>2015-09-23 09:23:21 -0400
commit411089d5e3082ce22f0bb2ee133b42bddf1d2b0a (patch)
tree502757d5c2a0a9ac3e56435bad08ff8a35c16de3
parent3ebdfd8779d53c032649f52a69f0bc5b77999861 (diff)
downloadefl-411089d5e3082ce22f0bb2ee133b42bddf1d2b0a.tar.gz
ecore_buffer: abort if wl_display_dispatch returns negative value
Summary: If the connection between server and client has problems, wl_display_dispatch an return negative value. i.e. when enlightenment has been killed accidently. In this case, app can enter into infinite loop. Signed-off-by: Boram Park <boram1288.park@samsung.com> Reviewers: stefan_schmidt, zmike, gwanglim, raster, devilhorns Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D3078
-rw-r--r--src/lib/ecore_buffer/ecore_buffer_con.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/lib/ecore_buffer/ecore_buffer_con.c b/src/lib/ecore_buffer/ecore_buffer_con.c
index 7cc4bc5103..09a887a006 100644
--- a/src/lib/ecore_buffer/ecore_buffer_con.c
+++ b/src/lib/ecore_buffer/ecore_buffer_con.c
@@ -248,6 +248,17 @@ _ecore_buffer_con_consumer_create(const char *name, int queue_size, int w, int h
void
_ecore_buffer_con_init_wait(void)
{
+ int ret;
+
while (!_connection->init_done)
- wl_display_dispatch(_connection->display);
+ {
+ ret = wl_display_dispatch(_connection->display);
+ if ((ret < 0) && ((errno != EAGAIN) && (errno != EINVAL)))
+ {
+ /* raise exit signal */
+ ERR("Wayland socket error: %s", strerror(errno));
+ abort();
+ break;
+ }
+ }
}