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