]> git.eshelyaron.com Git - emacs.git/commitdiff
(ccl_coding_driver): If ccl_driver is interrupted by a
authorKenichi Handa <handa@m17n.org>
Fri, 18 Sep 1998 13:10:40 +0000 (13:10 +0000)
committerKenichi Handa <handa@m17n.org>
Fri, 18 Sep 1998 13:10:40 +0000 (13:10 +0000)
user or the CCL program executed an invalid command, return
CODING_FINISH_INTERRUPT.
(code_convert_region): Pay attention to the converters return
value CODING_FINISH_NORMAL and CODING_FINISH_INTERRUPT.

src/coding.c

index bc6035eb25b17173025cd056ecf55f6699ab5908..47268d340bfea24f4546b2d9a827aad01714b04d 100644 (file)
@@ -3625,6 +3625,10 @@ ccl_coding_driver (coding, source, destination, src_bytes, dst_bytes, encodep)
     case CCL_STAT_SUSPEND_BY_DST:
       result = CODING_FINISH_INSUFFICIENT_DST;
       break;
+    case CCL_STAT_QUIT:
+    case CCL_STAT_INVALID_CMD:
+      result = CODING_FINISH_INTERRUPT;
+      break;
     default:
       result = CODING_FINISH_NORMAL;
       break;
@@ -4253,6 +4257,11 @@ code_convert_region (from, from_byte, to, to_byte, coding, encodep, replace)
       src += coding->consumed;
       dst += inserted_byte;
 
+      if (result == CODING_FINISH_NORMAL)
+       {
+         src += len_byte;
+         break;
+       }
       if (! encodep && result == CODING_FINISH_INCONSISTENT_EOL)
        {
          unsigned char *pend = dst, *p = pend - inserted_byte;
@@ -4320,6 +4329,20 @@ code_convert_region (from, from_byte, to, to_byte, coding, encodep, replace)
          fake_multibyte = 1;
          break;
        }
+      if (result == CODING_FINISH_INTERRUPT)
+       {
+         /* The conversion procedure was interrupted by a user.  */
+         fake_multibyte = 1;
+         break;
+       }
+      /* Now RESULT == CODING_FINISH_INSUFFICIENT_DST  */
+      if (coding->consumed < 1)
+       {
+         /* It's quite strange to require more memory without
+            consuming any bytes.  Perhaps CCL program bug.  */
+         fake_multibyte = 1;
+         break;
+       }
       if (first)
        {
          /* We have just done the first batch of conversion which was