From: Kenichi Handa Date: Tue, 18 Mar 1997 23:31:34 +0000 (+0000) Subject: (encode_terminal_code): Check validity of character code. X-Git-Tag: emacs-20.1~2765 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=085d590815e248a0fb4beca49c8137dcb051de20;p=emacs.git (encode_terminal_code): Check validity of character code. --- diff --git a/src/term.c b/src/term.c index 0042da83600..df7f86cba92 100644 --- a/src/term.c +++ b/src/term.c @@ -785,8 +785,8 @@ encode_terminal_code (src, dst, src_len, dst_len, consumed) { GLYPH *src_start = src, *src_end = src + src_len; unsigned char *dst_start = dst, *dst_end = dst + dst_len; - register GLYPH g = *src; - int c = GLYPH_CHAR (selected_frame, g); + register GLYPH g; + unsigned int c; unsigned char workbuf[4], *buf; int len, produced, processed; register int tlen = GLYPH_TABLE_LENGTH; @@ -798,7 +798,12 @@ encode_terminal_code (src, dst, src_len, dst_len, consumed) /* We must skip glyphs to be padded for a wide character. */ if (! (g & GLYPH_MASK_PADDING)) { - c = GLYPH_CHAR (selected_frame, g); + if ((c = GLYPH_CHAR (selected_frame, g)) > MAX_CHAR) + { + c = ' '; + g = MAKE_GLYPH (selected_frame, c, + GLYPH_FACE (selected_frame, g)); + } if (COMPOSITE_CHAR_P (c)) { /* If C is a composite character, we can display @@ -817,7 +822,7 @@ encode_terminal_code (src, dst, src_len, dst_len, consumed) /* We set the multi-byte form of C at BUF. */ len = CHAR_STRING (c, workbuf, buf); else - /* We have the multi-byte form in Vglyph_table. */ + /* We have a string in Vglyph_table. */ len = GLYPH_LENGTH (tbase, g), buf = GLYPH_STRING (tbase, g); produced = encode_coding (&terminal_coding, buf, dst,