From b2f9c4c6d4bf4a0f1f1f7342cb9de410f187c40c Mon Sep 17 00:00:00 2001 From: Po Lu Date: Sat, 20 Aug 2022 10:32:09 +0800 Subject: [PATCH] Fix crash when the keymap changes * src/xterm.c (handle_one_xevent): Call XkbRefreshKeyboardMapping first before trying to update the map. --- src/xterm.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/xterm.c b/src/xterm.c index 12c7b7d4dcc..39e5a8e1861 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -23027,6 +23027,8 @@ handle_one_xevent (struct x_display_info *dpyinfo, if (xkbevent->any.xkb_type == XkbNewKeyboardNotify || xkbevent->any.xkb_type == XkbMapNotify) { + XkbRefreshKeyboardMapping (&xkbevent->map); + if (dpyinfo->xkb_desc) { if (XkbGetUpdatedMap (dpyinfo->display, @@ -23035,11 +23037,9 @@ handle_one_xevent (struct x_display_info *dpyinfo, | XkbModifierMapMask | XkbVirtualModsMask), dpyinfo->xkb_desc) == Success) - { - XkbGetNames (dpyinfo->display, - XkbGroupNamesMask | XkbVirtualModNamesMask, - dpyinfo->xkb_desc); - } + XkbGetNames (dpyinfo->display, + XkbGroupNamesMask | XkbVirtualModNamesMask, + dpyinfo->xkb_desc); else { XkbFreeKeyboard (dpyinfo->xkb_desc, XkbAllComponentsMask, True); @@ -23061,7 +23061,6 @@ handle_one_xevent (struct x_display_info *dpyinfo, dpyinfo->xkb_desc); } - XkbRefreshKeyboardMapping (&xkbevent->map); x_find_modifier_meanings (dpyinfo); } else if (x_dnd_in_progress -- 2.39.5