Mercurial > emacs
changeset 51326:92b845a3d3a6
(CCL_WRITE_CHAR): Increment extra_bytes only when it is
nonzero.
(ccl_driver): Initialize extra_bytes to ccl->eight_bit_control.
(setup_ccl_program): Initialize ccl->eight_bit_control to zero.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Fri, 30 May 2003 07:56:08 +0000 |
parents | 6ef863c4a5d8 |
children | 389d833cd25e |
files | src/ccl.c |
diffstat | 1 files changed, 4 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ccl.c Thu May 29 23:53:21 2003 +0000 +++ b/src/ccl.c Fri May 30 07:56:08 2003 +0000 @@ -730,7 +730,7 @@ if (bytes == 1) \ { \ *dst++ = (ch); \ - if ((ch) >= 0x80 && (ch) < 0xA0) \ + if (extra_bytes && (ch) >= 0x80 && (ch) < 0xA0) \ /* We may have to convert this eight-bit char to \ multibyte form later. */ \ extra_bytes++; \ @@ -887,7 +887,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; if (ic >= ccl->eof_ic) ic = CCL_HEADER_MAIN; @@ -1905,7 +1905,7 @@ ccl->ic = ic; ccl->stack_idx = stack_idx; ccl->prog = ccl_prog; - ccl->eight_bit_control = (extra_bytes > 0); + ccl->eight_bit_control = (extra_bytes > 1); if (consumed) *consumed = src - source; return (dst ? dst - destination : 0); @@ -2060,6 +2060,7 @@ ccl->stack_idx = 0; ccl->eol_type = CODING_EOL_LF; ccl->suppress_error = 0; + ccl->eight_bit_control = 0; return 0; }