diff options
author | Will Thompson <will@willthompson.co.uk> | 2014-07-10 14:34:37 +0100 |
---|---|---|
committer | Martin T. H. Sandsmark <martin.sandsmark@kde.org> | 2014-08-03 14:07:00 +0200 |
commit | dca1048239b5f3b973a847a21de1ee83c92f6631 (patch) | |
tree | a3e578995e4ea7b05ffd99b260a4766aecc5b8af | |
parent | 3238443dc1ff5e7d0a9457dce5e0fb46c7bc1624 (diff) | |
download | libvncserver-dca1048239b5f3b973a847a21de1ee83c92f6631.zip libvncserver-dca1048239b5f3b973a847a21de1ee83c92f6631.tar.gz |
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.
-rw-r--r-- | x11vnc/xrandr.c | 1 |
1 files changed, 1 insertions, 0 deletions
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; |