All current callers close all fds, so this has gone unnoticed, but if
we close less than all fds with close_fds() we leak all the unclosed
ones and ruin further event demarshalling.

A future patch will close less than the full buffer's worth of fds,
so this is now noticed.

Signed-off-by: Derek Foreman <der...@osg.samsung.com>
---
 src/connection.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/connection.c b/src/connection.c
index 5c3d187..7fe35b5 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -186,6 +186,7 @@ close_fds(struct wl_buffer *buffer, int max)
        count = size / sizeof fds[0];
        if (max > 0 && max < count)
                count = max;
+       size = count * sizeof fds[0];
        for (i = 0; i < count; i++)
                close(fds[i]);
        buffer->tail += size;
-- 
2.11.0

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to