diff src/coding.c @ 107506:cd151730b160

coding.c (decode_coding_ccl): Fix previous change for the multibyte case.
author Kenichi Handa <handa@m17n.org>
date Tue, 16 Mar 2010 11:14:40 +0900
parents ebc10ed88b5c
children 8960853cf85d
line wrap: on
line diff
--- a/src/coding.c	Tue Mar 16 10:04:20 2010 +0900
+++ b/src/coding.c	Tue Mar 16 11:14:40 2010 +0900
@@ -5245,7 +5245,7 @@
   int multibytep = coding->src_multibyte;
   struct ccl_program *ccl = &coding->spec.ccl->ccl;
   int source_charbuf[1024];
-  int source_byteidx[1024];
+  int source_byteidx[1025];
   Lisp_Object attrs, charset_list;
 
   CODING_GET_INFO (coding, attrs, charset_list);
@@ -5256,11 +5256,14 @@
       int i = 0;
 
       if (multibytep)
-	while (i < 1024 && p < src_end)
-	  {
-	    source_byteidx[i] = p - src;
-	    source_charbuf[i++] = STRING_CHAR_ADVANCE (p);
-	  }
+	{
+	  while (i < 1024 && p < src_end)
+	    {
+	      source_byteidx[i] = p - src;
+	      source_charbuf[i++] = STRING_CHAR_ADVANCE (p);
+	    }
+	  source_byteidx[i] = p - src;
+	}
       else
 	while (i < 1024 && p < src_end)
 	  source_charbuf[i++] = *p++;
@@ -5270,7 +5273,7 @@
       ccl_driver (ccl, source_charbuf, charbuf, i, charbuf_end - charbuf,
 		  charset_list);
       charbuf += ccl->produced;
-      if (multibytep && ccl->consumed < i)
+      if (multibytep)
 	src += source_byteidx[ccl->consumed];
       else
 	src += ccl->consumed;