]> git.eshelyaron.com Git - emacs.git/commitdiff
(detect_coding_sjis): Handle shift_jis-2004 correctly.
authorKenichi Handa <handa@m17n.org>
Wed, 8 Jul 2009 02:28:31 +0000 (02:28 +0000)
committerKenichi Handa <handa@m17n.org>
Wed, 8 Jul 2009 02:28:31 +0000 (02:28 +0000)
(encode_coding_sjis): Fix the code range check.

src/ChangeLog
src/coding.c

index deaed0fbc824ba433ed04194f8d0f70ffacdf939..6007a436ca834db3578ea8c72acee53e28e1670d 100644 (file)
@@ -1,3 +1,10 @@
+2009-07-08  Kenichi Handa  <handa@m17n.org>
+
+       * coding.h (JIS_TO_SJIS2): Fix the code range check.
+
+       * coding.c (detect_coding_sjis): Handle shift_jis-2004 correctly.
+       (encode_coding_sjis): Fix the code range check.
+
 2009-07-07  Chong Yidong  <cyd@stupidchicken.com>
 
        * fileio.c (Fsubstitute_in_file_name, Ffile_name_directory)
index 3fc43df636bebd0a63cba8b49914b297e7386f40..4ff1acab440be3044d86a6a84c74c48b2fad56c4 100644 (file)
@@ -4671,6 +4671,12 @@ detect_coding_sjis (coding, detect_info)
   int consumed_chars = 0;
   int found = 0;
   int c;
+  Lisp_Object attrs, charset_list;
+  int max_first_byte_of_2_byte_code;
+
+  CODING_GET_INFO (coding, attrs, charset_list);
+  max_first_byte_of_2_byte_code
+    = (XINT (Flength (charset_list)) > 3 ? 0xFC : 0xEF);
 
   detect_info->checked |= CATEGORY_MASK_SJIS;
   /* A coding system of this category is always ASCII compatible.  */
@@ -4682,7 +4688,8 @@ detect_coding_sjis (coding, detect_info)
       ONE_MORE_BYTE (c);
       if (c < 0x80)
        continue;
-      if ((c >= 0x81 && c <= 0x9F) || (c >= 0xE0 && c <= 0xEF))
+      if ((c >= 0x81 && c <= 0x9F)
+         || (c >= 0xE0 && c <= max_first_byte_of_2_byte_code))
        {
          ONE_MORE_BYTE (c);
          if (c < 0x40 || c == 0x7F || c > 0xFC)
@@ -5055,7 +5062,8 @@ encode_coding_sjis (coding)
              int c1, c2;
 
              c1 = code >> 8;
-             if (c1 == 0x21 || (c1 >= 0x23 && c1 < 0x25)
+             if (c1 == 0x21 || (c1 >= 0x23 && c1 <= 0x25)
+                 || c1 == 0x28
                  || (c1 >= 0x2C && c1 <= 0x2F) || c1 >= 0x6E)
                {
                  JIS_TO_SJIS2 (code);