aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog6
-rw-r--r--src/ccl.c30
2 files changed, 24 insertions, 12 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index e004696d3c0..c5cd6b41628 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
12001-02-15 Kenichi Handa <handa@etl.go.jp>
2
3 * ccl.c (ccl_driver) [CCL_ReadMultibyteChar2]: If SRC points an
4 invalid multibyte sequence, treat *SRC as a character of
5 eight-bit-graphic.
6
12001-02-15 Eli Zaretskii <eliz@is.elta.co.il> 72001-02-15 Eli Zaretskii <eliz@is.elta.co.il>
2 8
3 * textprop.c (Fset_text_properties): Doc fix. 9 * textprop.c (Fset_text_properties): Doc fix.
diff --git a/src/ccl.c b/src/ccl.c
index 45cc525112d..fe7faafb9e5 100644
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -1255,21 +1255,27 @@ ccl_driver (ccl, source, destination, src_bytes, dst_bytes, consumed)
1255 reg[rrr] = i; 1255 reg[rrr] = i;
1256 reg[RRR] = CHARSET_ASCII; 1256 reg[RRR] = CHARSET_ASCII;
1257 } 1257 }
1258 else if (i <= MAX_CHARSET_OFFICIAL_DIMENSION1)
1259 {
1260 if (src >= src_end)
1261 goto ccl_read_multibyte_character_suspend;
1262 reg[RRR] = i;
1263 reg[rrr] = (*src++ & 0x7F);
1264 }
1265 else if (i <= MAX_CHARSET_OFFICIAL_DIMENSION2) 1258 else if (i <= MAX_CHARSET_OFFICIAL_DIMENSION2)
1266 { 1259 {
1267 if ((src + 1) >= src_end) 1260 int dimension = BYTES_BY_CHAR_HEAD (i) - 1;
1261
1262 if (dimension == 0)
1263 {
1264 /* `i' is a leading code for an undefined charset. */
1265 reg[RRR] = CHARSET_8_BIT_GRAPHIC;
1266 reg[rrr] = i;
1267 }
1268 else if (src + dimension > src_end)
1268 goto ccl_read_multibyte_character_suspend; 1269 goto ccl_read_multibyte_character_suspend;
1269 reg[RRR] = i; 1270 else
1270 i = (*src++ & 0x7F); 1271 {
1271 reg[rrr] = ((i << 7) | (*src & 0x7F)); 1272 reg[RRR] = i;
1272 src++; 1273 i = (*src++ & 0x7F);
1274 if (dimension == 1)
1275 reg[rrr] = i;
1276 else
1277 reg[rrr] = ((i << 7) | (*src++ & 0x7F));
1278 }
1273 } 1279 }
1274 else if ((i == LEADING_CODE_PRIVATE_11) 1280 else if ((i == LEADING_CODE_PRIVATE_11)
1275 || (i == LEADING_CODE_PRIVATE_12)) 1281 || (i == LEADING_CODE_PRIVATE_12))