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;
 }