Mercurial > emacs
changeset 88101:5297ed06b207
(CCL_WRITE_CHAR, CCL_WRITE_MULTIBYTE_CHAR, ccl_driver):
Cancel previous change.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Fri, 01 Feb 2008 01:18:05 +0000 |
parents | 9623247b8103 |
children | 0fa30755c209 |
files | src/ccl.c |
diffstat | 1 files changed, 10 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ccl.c Thu Jan 31 22:54:22 2008 +0000 +++ b/src/ccl.c Fri Feb 01 01:18:05 2008 +0000 @@ -748,13 +748,16 @@ int bytes = SINGLE_BYTE_CHAR_P (ch) ? 1: CHAR_BYTES (ch); \ if (!dst) \ CCL_INVALID_CMD; \ - if (ccl->eight_bit_control \ - && bytes == 1 && (ch) >= 0x80 && (ch) < 0xA0) \ - extra_bytes++; \ - if (dst + bytes + extra_bytes <= (dst_bytes ? dst_end : src)) \ + else if (dst + bytes + extra_bytes < (dst_bytes ? dst_end : src)) \ { \ if (bytes == 1) \ - *dst++ = (ch); \ + { \ + *dst++ = (ch); \ + if (extra_bytes && (ch) >= 0x80 && (ch) < 0xA0) \ + /* We may have to convert this eight-bit char to \ + multibyte form later. */ \ + extra_bytes++; \ + } \ else if (CHAR_VALID_P (ch, 0)) \ dst += CHAR_STRING (ch, dst); \ else \ @@ -772,7 +775,7 @@ int bytes = CHAR_BYTES (ch); \ if (!dst) \ CCL_INVALID_CMD; \ - else if (dst + bytes + extra_bytes <= (dst_bytes ? dst_end : src)) \ + else if (dst + bytes + extra_bytes < (dst_bytes ? dst_end : src)) \ { \ if (CHAR_VALID_P ((ch), 0)) \ dst += CHAR_STRING ((ch), dst); \ @@ -916,7 +919,7 @@ each of them will be converted to multibyte form of 2-byte sequence. For that conversion, we remember how many more bytes we must keep in DESTINATION in this variable. */ - int extra_bytes = 0; + int extra_bytes = ccl->eight_bit_control; int eof_ic = ccl->eof_ic; int eof_hit = 0;