X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/35cd7cd68e92e4f364bde2875a02780f2caf6197..fbdc17211b56572046387d5fd9e80d96e3d07af4:/src/coding.c diff --git a/src/coding.c b/src/coding.c index df81eaba16..a464950e8d 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;