From: Kenichi Handa Date: Fri, 30 May 2003 08:14:36 +0000 (+0000) Subject: (CCL_WRITE_CHAR): Increment extra_bytes only when it is X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e13dc6b1fd1f8e983a8e6d279181f395623fd811;p=emacs.git (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 --git a/src/ChangeLog b/src/ChangeLog index ca57df34edb..698d7e2bc48 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,15 @@ +2003-05-30 Kenichi Handa + + * coding.c (ccl_coding_driver): Set ccl->eight_bit_control + properly before calling ccl_driver. + + * ccl.h (struct ccl_program) eight_bit_control. + (setup_ccl_program): Initialize ccl->eight_bit_control to zero. + 2003-05-14 Stefan Monnier * keyboard.c (make_lispy_event): Apply modifiers to multibyte chars. diff --git a/src/ccl.c b/src/ccl.c index d3879abae6b..de848995779 100644 --- a/src/ccl.c +++ b/src/ccl.c @@ -717,7 +717,7 @@ else 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++; \ @@ -731,6 +731,7 @@ else CCL_SUSPEND (CCL_STAT_SUSPEND_BY_DST); \ } while (0) + /* Encode one character CH to multibyte form and write to the current output buffer. The output bytes always forms a valid multibyte sequence. */ @@ -874,7 +875,7 @@ ccl_driver (ccl, source, destination, src_bytes, dst_bytes, consumed) 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; @@ -1849,7 +1850,7 @@ ccl_driver (ccl, source, destination, src_bytes, dst_bytes, consumed) 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); @@ -2004,6 +2005,7 @@ setup_ccl_program (ccl, ccl_prog) ccl->stack_idx = 0; ccl->eol_type = CODING_EOL_LF; ccl->suppress_error = 0; + ccl->eight_bit_control = 0; return 0; }