diff options
-rw-r--r-- | nx-X11/lib/src/xkb/XKBBind.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/nx-X11/lib/src/xkb/XKBBind.c b/nx-X11/lib/src/xkb/XKBBind.c index 068e8f2a0..ffe5ad9d7 100644 --- a/nx-X11/lib/src/xkb/XKBBind.c +++ b/nx-X11/lib/src/xkb/XKBBind.c @@ -108,7 +108,21 @@ XKeycodeToKeysym(Display *dpy, _XkbCheckPendingRefresh(dpy, dpy->xkb_info); +#ifdef NX_TRANS_SOCKET + /* + check again, we have seen cases where the connection broke + during CheckPendingEvents(), followed by a crash when accessing + dpy. See https://github.com/ArcticaProject/nx-libs/issues/801 + */ + if (_XkbUnavailable(dpy)) + return _XKeycodeToKeysym(dpy, kc, col); +#endif + xkb = dpy->xkb_info->desc; +#ifdef NX_TRANS_SOCKET + if (xkb == NULL) + return _XKeycodeToKeysym(dpy, kc, col); +#endif if ((kc < xkb->min_key_code) || (kc > xkb->max_key_code)) return NoSymbol; |