• Olivier Fourdan's avatar
    XKB: fix XkbGetKeyboardByName with Xming server · a3759f32
    Olivier Fourdan authored
    XkbGetKeyboardByName relies on flags to read the data from the server.
    
    If the X server sends us the wrong flags or if a subreply is smaller
    than it should be, XkbGetKeyboardByName will not read all the available
    data and leave data in the buffer, which will cause the next _XReply()
    to fail with:
    
    [xcb] Extra reply data still left in queue
    [xcb] This is most likely caused by a broken X extension library
    [xcb] Aborting, sorry about that.
    xcb_io.c:576: _XReply: Assertion `!xcb_xlib_extra_reply_data_left' failed.
    Aborted
    
    Check if there is some extra data left at the end of
    XkbGetKeyboardByName() and discard that data if any is found.
    
    Many thanks to Peter Hutterer <peter.hutterer@who-t.net> for finding the
    root cause of the issue and Adam Jackson <ajax@redhat.com> for helping
    with the analysis!
    Signed-off-by: 's avatarOlivier Fourdan <ofourdan@redhat.com>
    Reviewed-by: 's avatarDaniel Stone <daniels@collabora.com>
    Reviewed-by: 's avatarPeter Hutterer <peter.hutterer@who-t.net>
    Signed-off-by: 's avatarPeter Hutterer <peter.hutterer@who-t.net>
    Backported-to-NX-by: 's avatarUlrich Sibiller <uli42@gmx.de>
    a3759f32
XKBGetByName.c 7.11 KB