summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa <handa@m17n.org>2010-03-16 11:14:40 +0900
committerKenichi Handa <handa@m17n.org>2010-03-16 11:14:40 +0900
commitfbdc17211b56572046387d5fd9e80d96e3d07af4 (patch)
treee03966e23136d272c8688b5f4a3c167c8754c39b /src
parent35cd7cd68e92e4f364bde2875a02780f2caf6197 (diff)
downloademacs-fbdc17211b56572046387d5fd9e80d96e3d07af4.tar.gz
coding.c (decode_coding_ccl): Fix previous change for the multibyte case.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/coding.c17
2 files changed, 15 insertions, 7 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index d8369bb9a20..9dc50960fbe 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2010-03-16 Kenichi Handa <handa@m17n.org>
+
+ * coding.c (decode_coding_ccl): Fix previous change for the
+ multibyte case.
+
2010-03-15 Andreas Politz <politza@fh-trier.de> (tiny change)
* editfns.c (Fformat): Account for string precision when computing
diff --git a/src/coding.c b/src/coding.c
index df81eaba16e..a464950e8d1 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -5245,7 +5245,7 @@ decode_coding_ccl (coding)
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 @@ decode_coding_ccl (coding)
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 @@ decode_coding_ccl (coding)
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;