(encode_terminal_code): Handle raw 8-bit codes correctly.
authorKenichi Handa <handa@m17n.org>
Mon, 28 Sep 1998 11:52:53 +0000 (11:52 +0000)
committerKenichi Handa <handa@m17n.org>
Mon, 28 Sep 1998 11:52:53 +0000 (11:52 +0000)
src/term.c

index de48cb0..17607ce 100644 (file)
@@ -858,13 +858,19 @@ encode_terminal_code (src, dst, src_len, dst_len, consumed)
            }
          
          encode_coding (coding, buf, dst, len, dst_end - dst);
-         if (coding->consumed < len)
-           /* We get a carryover because the remaining output
-              buffer is too short.  We must break the loop here
-              without increasing SRC so that the next call of
-              this function start from the same glyph.  */
-           break;
+         len -= coding->consumed;
          dst += coding->produced;
+         if (len > 0)
+           {
+             if (len > dst_end - dst)
+               /* The remaining output buffer is too short.  We must
+                  break the loop here without increasing SRC so that
+                  the next call of this function start from the same
+                  glyph.  */
+               break;
+             buf += len;
+             while (len--) *dst++ = *buf++;
+           }
        }
       src++;
     }