From 16d276308acb88c607d832f743d7d75d8bf9e420 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 21 Jul 2016 15:14:37 +0200 Subject: x11, wayland: do not accidentally close FD 0 Both backends have code to close each FD of their wakeup_pipe array. This array is default-initialized with 0, which means if the backends exit before the wakeup pipe is created (e.g. when probing), they would close FD 0. Initialize the FDs with -1. Then we call close(-1) in these situations, which is perfectly allowed and has no bad consequences. --- video/out/wayland_common.c | 7 +++++-- video/out/x11_common.c | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c index 75c9ead470..839dd69251 100644 --- a/video/out/wayland_common.c +++ b/video/out/wayland_common.c @@ -1009,8 +1009,11 @@ int vo_wayland_init(struct vo *vo) { vo->wayland = talloc_zero(NULL, struct vo_wayland_state); struct vo_wayland_state *wl = vo->wayland; - wl->vo = vo; - wl->log = mp_log_new(wl, vo->log, "wayland"); + *wl = (struct vo_wayland_state){ + .vo = vo, + .log = mp_log_new(wl, vo->log, "wayland"), + .wakeup_pipe = {-1, -1}, + }; wl_list_init(&wl->display.output_list); diff --git a/video/out/x11_common.c b/video/out/x11_common.c index 2f35b6a4b8..b0082086bb 100644 --- a/video/out/x11_common.c +++ b/video/out/x11_common.c @@ -543,6 +543,7 @@ int vo_x11_init(struct vo *vo) .input_ctx = vo->input_ctx, .screensaver_enabled = true, .xrandr_event = -1, + .wakeup_pipe = {-1, -1}, }; vo->x11 = x11; -- cgit v1.2.3