# HG changeset patch # User Kenichi Handa # Date 1054281368 0 # Node ID 92b845a3d3a6c201df6eafbd31da092fa1c0ce4d # Parent 6ef863c4a5d890e3f0191e6159339b9f9484bb55 (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. diff -r 6ef863c4a5d8 -r 92b845a3d3a6 src/ccl.c --- 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; }