]> git.eshelyaron.com Git - emacs.git/commitdiff
(encode_terminal_code): Check validity of character code.
authorKenichi Handa <handa@m17n.org>
Tue, 18 Mar 1997 23:31:34 +0000 (23:31 +0000)
committerKenichi Handa <handa@m17n.org>
Tue, 18 Mar 1997 23:31:34 +0000 (23:31 +0000)
src/term.c

index 0042da8360075170d8444331001e4245daa15438..df7f86cba92e64c6a280401a2e5f727d26a2ebe3 100644 (file)
@@ -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,