summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/keymap.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/keymap.c b/src/keymap.c
index 7831c293316..107c2ec3b87 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -272,6 +272,10 @@ access_keymap (map, idx, t_ok)
be put in the canonical order. */
if (XTYPE (idx) == Lisp_Symbol)
idx = reorder_modifiers (idx);
+ else if (INTEGERP (idx))
+ /* Clobber the high bits that can be present on a machine
+ with more than 24 bits of integer. */
+ XFASTINT (idx) = XINT (idx) & ((1 << 24) - 1);
{
Lisp_Object tail;
@@ -368,7 +372,10 @@ store_in_keymap (keymap, idx, def)
be put in the canonical order. */
if (XTYPE (idx) == Lisp_Symbol)
idx = reorder_modifiers (idx);
-
+ else if (INTEGERP (idx))
+ /* Clobber the high bits that can be present on a machine
+ with more than 24 bits of integer. */
+ XFASTINT (idx) = XINT (idx) & ((1 << 24) - 1);
/* Scan the keymap for a binding of idx. */
{