From dca1048239b5f3b973a847a21de1ee83c92f6631 Mon Sep 17 00:00:00 2001 From: Will Thompson Date: Thu, 10 Jul 2014 14:34:37 +0100 Subject: [PATCH] x11vnc: fix double X_UNLOCK on xrandr events check_xrandr_event() assumes X_LOCK is taken before it is called, and currently calls X_UNLOCK on behalf of the caller. But in practice, all callers assume that the lock is still held after check_xrandr_event() returns. In particular, this leads to a double-unlock and crash in check_xevents() on any xrandr event. --- x11vnc/xrandr.c | 1 + 1 file changed, 1 insertion(+) diff --git a/x11vnc/xrandr.c b/x11vnc/xrandr.c index d0d68e1..f2fb5ea 100644 --- a/x11vnc/xrandr.c +++ b/x11vnc/xrandr.c @@ -268,6 +268,7 @@ int check_xrandr_event(char *msg) { /* under do_change caller normally returns before its X_UNLOCK */ X_UNLOCK; handle_xrandr_change(rev->width, rev->height); + X_LOCK; } if (qout) { return do_change;