+2002-05-10 Yong Lu <lyongu@asia-infonet.com>
+
+ * charset.c (load_charset_map): Fix previous change.
+ (read_hex): Don't treat SPC as a comment starter.
+ (decode_char): If CODE_POINT_TO_INDEX retruns -1, always return
+ -1.
+ (Fdecode_char): Fix typo.
+
+2002-05-10 Kenichi Handa <handa@etl.go.jp>
+
+ * charset.h (struct charset): New member `code_space_mask'.
+
+ * coding.c (coding_set_source): Delete the local variable
+ beg_byte.
+ (encode_coding_charset): Delete the local variable charset.
+ (Fdefine_coding_system_internal): Likewise.
+ (Fdefine_coding_system_internal): Setup
+ attrs[coding_attr_charset_valids] correctly.
+
+ * charset.c (CODE_POINT_TO_INDEX): Utilize `code_space_mask'
+ member to check if CODE is valid or not.
+ (Fdefine_charset_internal): Initialize `code_space_mask' member.
+ (encode_char): Before calling CODE_POINT_TO_INDEX, check if CODE
+ is within the range of charset->min_code and carset->max_code.
+
2002-05-09 Dave Love <fx@gnu.org>
* syntax.h (syntax_temp) [!__GNUC__]: Declare.
else
{
struct buffer *buf = XBUFFER (coding->src_object);
- EMACS_INT beg_byte = BUF_BEG_BYTE (buf);
EMACS_INT gpt_byte = BUF_GPT_BYTE (buf);
unsigned char *beg_addr = BUF_BEG_ADDR (buf);
unsigned char *dst_end = coding->destination + coding->dst_bytes;
int safe_room = MAX_MULTIBYTE_LENGTH;
int produced_chars = 0;
- struct charset *charset;
Lisp_Object attrs, eol_type, charset_list;
int ascii_compatible;
int c;
for (tail = charset_list; CONSP (tail); tail = XCDR (tail))
{
struct charset *charset = CHARSET_FROM_ID (XINT (XCAR (tail)));
+ int idx = (CHARSET_DIMENSION (charset) - 1) * 4;
- for (i = charset->code_space[0]; i <= charset->code_space[1]; i++)
- if (NILP (AREF (val, i)))
- ASET (val, i, XCAR (tail));
+ for (i = charset->code_space[idx];
+ i <= charset->code_space[idx + 1]; i++)
+ {
+ if (NILP (AREF (val, i)))
+ ASET (val, i, XCAR (tail));
+ else
+ error ("Charsets conflicts in the first byte");
+ }
}
ASET (attrs, coding_attr_charset_valids, val);
category = coding_category_charset;
else if (EQ (coding_type, Qiso_2022))
{
Lisp_Object initial, reg_usage, request, flags;
- struct charset *charset;
int i, id;
if (nargs < coding_arg_iso2022_max)