From: Po Lu Date: Sat, 20 Aug 2022 02:32:09 +0000 (+0800) Subject: Fix crash when the keymap changes X-Git-Tag: emacs-29.0.90~1447^2~28 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b2f9c4c6d4bf4a0f1f1f7342cb9de410f187c40c;p=emacs.git Fix crash when the keymap changes * src/xterm.c (handle_one_xevent): Call XkbRefreshKeyboardMapping first before trying to update the map. --- 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