]> git.eshelyaron.com Git - emacs.git/commitdiff
(push_key_description): Handle invalid character key.
authorKenichi Handa <handa@m17n.org>
Tue, 9 May 2006 13:17:24 +0000 (13:17 +0000)
committerKenichi Handa <handa@m17n.org>
Tue, 9 May 2006 13:17:24 +0000 (13:17 +0000)
src/keymap.c

index 4f8343bf5cfe0a8589c9c3a2d840b19cbfaf5db0..a96697808308e1a9269d07106cf45bcda439570f 100644 (file)
@@ -2090,12 +2090,21 @@ push_key_description (c, p, force_multibyte)
      int force_multibyte;
 {
   unsigned c2;
+  int valid_p;
 
   /* Clear all the meaningless bits above the meta bit.  */
   c &= meta_modifier | ~ - meta_modifier;
   c2 = c & ~(alt_modifier | ctrl_modifier | hyper_modifier
             | meta_modifier | shift_modifier | super_modifier);
 
+  valid_p = SINGLE_BYTE_CHAR_P (c) || char_valid_p (c, 0);
+  if (! valid_p)
+    {
+      /* KEY_DESCRIPTION_SIZE is large enough for this.  */
+      p += sprintf (p, "[%d]", c);
+      return p;
+    }
+
   if (c & alt_modifier)
     {
       *p++ = 'A';
@@ -2183,16 +2192,13 @@ push_key_description (c, p, force_multibyte)
     }
   else
     {
-      int valid_p = SINGLE_BYTE_CHAR_P (c) || char_valid_p (c, 0);
-
-      if (force_multibyte && valid_p)
+      if (force_multibyte)
        {
          if (SINGLE_BYTE_CHAR_P (c))
            c = unibyte_char_to_multibyte (c);
          p += CHAR_STRING (c, p);
        }
-      else if (NILP (current_buffer->enable_multibyte_characters)
-              || valid_p)
+      else if (NILP (current_buffer->enable_multibyte_characters))
        {
          int bit_offset;
          *p++ = '\\';