changeset 21331:4c89837392b3

(CHARSET_OK): Don't reject safe charsets. (DECODE_DESIGNATION): Likewise. (check_composing_code): Likewise.
author Kenichi Handa <handa@m17n.org>
date Thu, 02 Apr 1998 00:25:47 +0000
parents 146e9f0c310b
children 1e2da269ca1f
files src/coding.c
diffstat 1 files changed, 8 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/coding.c	Thu Apr 02 00:25:47 1998 +0000
+++ b/src/coding.c	Thu Apr 02 00:25:47 1998 +0000
@@ -640,10 +640,11 @@
 
 enum iso_code_class_type iso_code_class[256];
 
-#define CHARSET_OK(idx, charset)		\
-  (CODING_SPEC_ISO_REQUESTED_DESIGNATION	\
-   (coding_system_table[idx], charset)		\
-   != CODING_SPEC_ISO_NO_REQUESTED_DESIGNATION)
+#define CHARSET_OK(idx, charset)			\
+  (coding_system_table[idx]->safe_charsets[charset]	\
+   || (CODING_SPEC_ISO_REQUESTED_DESIGNATION		\
+       (coding_system_table[idx], charset)		\
+       != CODING_SPEC_ISO_NO_REQUESTED_DESIGNATION))
 
 #define SHIFT_OUT_OK(idx) \
   (CODING_SPEC_ISO_INITIAL_DESIGNATION (coding_system_table[idx], 1) >= 0)
@@ -909,7 +910,8 @@
 				     make_number (chars),		   \
 				     make_number (final_char));		   \
     if (charset >= 0							   \
-	&& CODING_SPEC_ISO_REQUESTED_DESIGNATION (coding, charset) == reg) \
+	&& (CODING_SPEC_ISO_REQUESTED_DESIGNATION (coding, charset) == reg \
+	    || coding->safe_charsets[charset]))				   \
       {									   \
 	if (coding->spec.iso2022.last_invalid_designation_register == 0	   \
 	    && reg == 0							   \
@@ -968,6 +970,7 @@
 	      c1 = *src++;
 	      if ((c1 < ' ' || c1 >= 0x80)
 		  || (charset = iso_charset_table[dim][c >= ','][c1]) < 0
+		  || ! coding->safe_charsets[charset]
 		  || (CODING_SPEC_ISO_REQUESTED_DESIGNATION (coding, charset)
 		      == CODING_SPEC_ISO_NO_REQUESTED_DESIGNATION))
 		invalid_code_found = 1;