mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-03 08:30:09 +00:00
(detect_coding_sjis): Handle shift_jis-2004 correctly.
(encode_coding_sjis): Fix the code range check.
This commit is contained in:
parent
40149292c2
commit
f07190ca1f
12
src/coding.c
12
src/coding.c
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user