On Wed, Sep 25, 2013 at 10:39:12AM +0100, Neil Roberts wrote:
In wl_display_dispatch_queue, if poll fails then it would previously
return immediately and leak a reference in display-reader_count. Then
if the application ignores the error and tries to read again it will
block forever. This can happen for example if the poll fails with
EINTR which the application might consider to be a recoverable error.
This patch makes it cancel the read so the reader_count will be
decremented when poll fails.
---
Ok, here is a second version of the patch which calls
wl_display_cancel_read as you suggested. Thanks for the review.
Thanks for the reminder, we need that in the release.
Kristian
src/wayland-client.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/wayland-client.c b/src/wayland-client.c
index cad587d..a20a71e 100644
--- a/src/wayland-client.c
+++ b/src/wayland-client.c
@@ -1224,8 +1224,10 @@ wl_display_dispatch_queue(struct wl_display *display,
pfd[0].fd = display-fd;
pfd[0].events = POLLIN;
- if (poll(pfd, 1, -1) == -1)
+ if (poll(pfd, 1, -1) == -1) {
+ wl_display_cancel_read(display);
return -1;
+ }
pthread_mutex_lock(display-mutex);
--
1.8.3.1
___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel
___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel