]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix crash when the keymap changes
authorPo Lu <luangruo@yahoo.com>
Sat, 20 Aug 2022 02:32:09 +0000 (10:32 +0800)
committerPo Lu <luangruo@yahoo.com>
Sat, 20 Aug 2022 02:32:09 +0000 (10:32 +0800)
* src/xterm.c (handle_one_xevent): Call
XkbRefreshKeyboardMapping first before trying to update the map.

src/xterm.c

index 12c7b7d4dcc8dfab185481c8c7a0e6e709d02395..39e5a8e1861d923f039cf0cff9b97f1636a4a5e7 100644 (file)
@@ -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