summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenichi Handa <handa@m17n.org>2001-03-06 02:55:30 +0000
committerKenichi Handa <handa@m17n.org>2001-03-06 02:55:30 +0000
commit6f580c5de14ca812ed422b33e6fd7f8600167802 (patch)
treeb502157f511836ae24ceb6ce17752e2dcf238eaf
parent848580b8a46e61bc35d3f3b3c0d93d73e708dbaa (diff)
downloademacs-6f580c5de14ca812ed422b33e6fd7f8600167802.tar.gz
(ccl_driver) <CCL_ReadMultibyteChar2>: Fix for the case
that the source is unibyte.
-rw-r--r--src/ccl.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/ccl.c b/src/ccl.c
index 285888f744f..ce0a1bd4402 100644
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -1248,6 +1248,16 @@ ccl_driver (ccl, source, destination, src_bytes, dst_bytes, consumed)
goto ccl_read_multibyte_character_suspend;
}
+ if (!ccl->multibyte)
+ {
+ int bytes;
+ if (!UNIBYTE_STR_AS_MULTIBYTE_P (src, src_end - src, bytes))
+ {
+ reg[RRR] = CHARSET_8_BIT_CONTROL;
+ reg[rrr] = *src++;
+ break;
+ }
+ }
i = *src++;
if (i == '\n' && ccl->eol_type != CODING_EOL_LF)
{
@@ -1335,6 +1345,12 @@ ccl_driver (ccl, source, destination, src_bytes, dst_bytes, consumed)
break;
ccl_read_multibyte_character_suspend:
+ if (src <= src_end && !ccl->multibyte && ccl->last_block)
+ {
+ reg[RRR] = CHARSET_8_BIT_CONTROL;
+ reg[rrr] = i;
+ break;
+ }
src--;
if (ccl->last_block)
{