From: Kenichi Handa Date: Sat, 20 Jul 2013 04:19:05 +0000 (+0900) Subject: * coding.c (CODING_ISO_FLAG_LEVEL_4): New macro. X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~1762 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=99107004b1126160d8dc69df59af03dfb62d2f54;p=emacs.git * coding.c (CODING_ISO_FLAG_LEVEL_4): New macro. (decode_coding_iso_2022): Check the single-shift area. (Bug#8522) --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index fc38ef046a4..ccc27f71ac8 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-07-20 Kenichi Handa + + * international/mule.el (coding-system-iso-2022-flags): Add + `level-4'. (Bug#8522) + 2013-07-18 Michael Albinus * filenotify.el (file-notify--library): Renamed from diff --git a/src/ChangeLog b/src/ChangeLog index 8a1c163998b..c3a9ee4c145 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2013-07-20 Kenichi Handa + + * coding.c (CODING_ISO_FLAG_LEVEL_4): New macro. + (decode_coding_iso_2022): Check the single-shift area. (Bug#8522) + 2013-07-18 Paul Eggert * filelock.c: Fix unlikely file descriptor leaks. diff --git a/src/coding.c b/src/coding.c index e779197bbde..ad2042672b2 100644 --- a/src/coding.c +++ b/src/coding.c @@ -493,6 +493,8 @@ enum iso_code_class_type #define CODING_ISO_FLAG_USE_OLDJIS 0x10000 +#define CODING_ISO_FLAG_LEVEL_4 0x20000 + #define CODING_ISO_FLAG_FULL_SUPPORT 0x100000 /* A character to be produced on output if encoding of the original @@ -3733,7 +3735,9 @@ decode_coding_iso_2022 (struct coding_system *coding) else charset = CHARSET_FROM_ID (charset_id_2); ONE_MORE_BYTE (c1); - if (c1 < 0x20 || (c1 >= 0x80 && c1 < 0xA0)) + if (c1 < 0x20 || (c1 >= 0x80 && c1 < 0xA0) + || ((CODING_ISO_FLAGS (coding) & CODING_ISO_FLAG_LEVEL_4) + ? c1 >= 0x80 : c1 < 0x80)) goto invalid_code; break; @@ -3747,7 +3751,9 @@ decode_coding_iso_2022 (struct coding_system *coding) else charset = CHARSET_FROM_ID (charset_id_3); ONE_MORE_BYTE (c1); - if (c1 < 0x20 || (c1 >= 0x80 && c1 < 0xA0)) + if (c1 < 0x20 || (c1 >= 0x80 && c1 < 0xA0) + || ((CODING_ISO_FLAGS (coding) & CODING_ISO_FLAG_LEVEL_4) + ? c1 >= 0x80 : c1 < 0x80)) goto invalid_code; break;