Mercurial > emacs
comparison src/keyboard.c @ 34905:19f10425ca8b
(echo_char): If C is an integer, always call
push_key_description. Former code could signal an invalid
character error.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Thu, 28 Dec 2000 13:37:33 +0000 |
parents | a79d5c8fdfaf |
children | ef18b363abe3 |
comparison
equal
deleted
inserted
replaced
34904:fb9a566b63eb | 34905:19f10425ca8b |
---|---|
733 | 733 |
734 void | 734 void |
735 echo_char (c) | 735 echo_char (c) |
736 Lisp_Object c; | 736 Lisp_Object c; |
737 { | 737 { |
738 extern char *push_key_description (); | |
739 | |
740 if (current_kboard->immediate_echo) | 738 if (current_kboard->immediate_echo) |
741 { | 739 { |
742 char *ptr = current_kboard->echoptr; | 740 char *ptr = current_kboard->echoptr; |
743 | 741 |
744 if (ptr != current_kboard->echobuf) | 742 if (ptr != current_kboard->echobuf) |
753 | 751 |
754 if (ptr - current_kboard->echobuf | 752 if (ptr - current_kboard->echobuf |
755 > ECHOBUFSIZE - KEY_DESCRIPTION_SIZE) | 753 > ECHOBUFSIZE - KEY_DESCRIPTION_SIZE) |
756 return; | 754 return; |
757 | 755 |
758 if (ASCII_BYTE_P (ch)) | 756 ptr = push_key_description (ch, ptr, 1); |
759 ptr = push_key_description (ch, ptr); | |
760 else | |
761 { | |
762 if (SINGLE_BYTE_CHAR_P (ch)) | |
763 ch = unibyte_char_to_multibyte (ch); | |
764 ptr += CHAR_STRING (ch, ptr); | |
765 } | |
766 } | 757 } |
767 else if (SYMBOLP (c)) | 758 else if (SYMBOLP (c)) |
768 { | 759 { |
769 struct Lisp_String *name = XSYMBOL (c)->name; | 760 struct Lisp_String *name = XSYMBOL (c)->name; |
770 if ((ptr - current_kboard->echobuf) + STRING_BYTES (name) + 4 | 761 if ((ptr - current_kboard->echobuf) + STRING_BYTES (name) + 4 |