(coding_set_source): Delete the local variable beg_byte.
authorKenichi Handa <handa@m17n.org>
Fri, 10 May 2002 03:56:05 +0000 (03:56 +0000)
committerKenichi Handa <handa@m17n.org>
Fri, 10 May 2002 03:56:05 +0000 (03:56 +0000)
(encode_coding_charset): Delete the local variable charset.
(Fdefine_coding_system_internal): Likewise.
(Fdefine_coding_system_internal): Setup
attrs[coding_attr_charset_valids] correctly.

src/ChangeLog
src/coding.c

index dff8f6a..bf34746 100644 (file)
@@ -1,3 +1,28 @@
+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.
index be18ab8..375839f 100644 (file)
@@ -897,7 +897,6 @@ coding_set_source (coding)
       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);
 
@@ -4342,7 +4341,6 @@ encode_coding_charset (coding)
   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;
@@ -7319,10 +7317,16 @@ DEFUN ("define-coding-system-internal", Fdefine_coding_system_internal,
       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;
@@ -7402,7 +7406,6 @@ DEFUN ("define-coding-system-internal", Fdefine_coding_system_internal,
   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)