Commit 31165028 authored by Kenichi Handa's avatar Kenichi Handa
Browse files

(CCL_WRITE_CHAR): Check if CH is valid or not. If

invalid, execute CCL_INVALID_CMD.
(ccl_driver): If the CCL program is terminated because of
CCL_STAT_INVALID_CMD, copy the remaining source data to the
destination instead of throwing them away.
parent 789ce875
......@@ -721,8 +721,10 @@ else
multibyte form later. */ \
extra_bytes++; \
} \
else \
else if (CHAR_VALID_P (ch, 0)) \
dst += CHAR_STRING (ch, dst); \
else \
CCL_INVALID_CMD; \
} \
else \
CCL_SUSPEND (CCL_STAT_SUSPEND_BY_DST); \
......@@ -1781,6 +1783,16 @@ ccl_driver (ccl, source, destination, src_bytes, dst_bytes, consumed)
bcopy (msg, dst, msglen);
dst += msglen;
}
if (ccl->status == CCL_STAT_INVALID_CMD)
{
/* Copy the remaining source data. */
int i = src_end - src;
if (dst_bytes && (dst_end - dst) < i)
i = dst_end - dst;
bcopy (src, dst, i);
src += i;
dst += i;
}
}
ccl_finish:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment