summaryrefslogtreecommitdiff
path: root/src/term.c
diff options
context:
space:
mode:
authorKenichi Handa <handa@m17n.org>1998-09-28 11:52:53 +0000
committerKenichi Handa <handa@m17n.org>1998-09-28 11:52:53 +0000
commitc42869c47d6a598ded22d5e929d5388d3b6cb9f3 (patch)
tree70095912df1023b922cd6b24cd8eeb55158f2332 /src/term.c
parent2b9413932e29da3556434e5f78d3a7223d66c936 (diff)
downloademacs-c42869c47d6a598ded22d5e929d5388d3b6cb9f3.tar.gz
(encode_terminal_code): Handle raw 8-bit codes correctly.
Diffstat (limited to 'src/term.c')
-rw-r--r--src/term.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/term.c b/src/term.c
index de48cb0eb88..17607cea5d5 100644
--- a/src/term.c
+++ b/src/term.c
@@ -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++;
}