From: Kenichi Handa Date: Tue, 9 May 2006 13:17:24 +0000 (+0000) Subject: (push_key_description): Handle invalid character key. X-Git-Tag: emacs-pretest-22.0.90~2669 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f39a0b4301f5c1c5902b35ae9eb2f9f051da4bf0;p=emacs.git (push_key_description): Handle invalid character key. --- diff --git a/src/keymap.c b/src/keymap.c index 4f8343bf5cf..a9669780830 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -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++ = '\\';