aboutsummaryrefslogtreecommitdiffstats
path: root/src/coding.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/coding.c')
-rw-r--r--src/coding.c29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/coding.c b/src/coding.c
index 7a3bc40b9c7..a7b7c7d6b23 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -2053,7 +2053,7 @@ emacs_mule_char (struct coding_system *coding, const unsigned char *src,
2053 const unsigned char *src_end = coding->source + coding->src_bytes; 2053 const unsigned char *src_end = coding->source + coding->src_bytes;
2054 const unsigned char *src_base = src; 2054 const unsigned char *src_base = src;
2055 int multibytep = coding->src_multibyte; 2055 int multibytep = coding->src_multibyte;
2056 struct charset *charset; 2056 int charset_id;
2057 unsigned code; 2057 unsigned code;
2058 int c; 2058 int c;
2059 int consumed_chars = 0; 2059 int consumed_chars = 0;
@@ -2063,7 +2063,7 @@ emacs_mule_char (struct coding_system *coding, const unsigned char *src,
2063 if (c < 0) 2063 if (c < 0)
2064 { 2064 {
2065 c = -c; 2065 c = -c;
2066 charset = emacs_mule_charset[0]; 2066 charset_id = emacs_mule_charset[0];
2067 } 2067 }
2068 else 2068 else
2069 { 2069 {
@@ -2099,7 +2099,7 @@ emacs_mule_char (struct coding_system *coding, const unsigned char *src,
2099 switch (emacs_mule_bytes[c]) 2099 switch (emacs_mule_bytes[c])
2100 { 2100 {
2101 case 2: 2101 case 2:
2102 if (! (charset = emacs_mule_charset[c])) 2102 if ((charset_id = emacs_mule_charset[c]) < 0)
2103 goto invalid_code; 2103 goto invalid_code;
2104 ONE_MORE_BYTE (c); 2104 ONE_MORE_BYTE (c);
2105 if (c < 0xA0) 2105 if (c < 0xA0)
@@ -2112,7 +2112,7 @@ emacs_mule_char (struct coding_system *coding, const unsigned char *src,
2112 || c == EMACS_MULE_LEADING_CODE_PRIVATE_12) 2112 || c == EMACS_MULE_LEADING_CODE_PRIVATE_12)
2113 { 2113 {
2114 ONE_MORE_BYTE (c); 2114 ONE_MORE_BYTE (c);
2115 if (c < 0xA0 || ! (charset = emacs_mule_charset[c])) 2115 if (c < 0xA0 || (charset_id = emacs_mule_charset[c]) < 0)
2116 goto invalid_code; 2116 goto invalid_code;
2117 ONE_MORE_BYTE (c); 2117 ONE_MORE_BYTE (c);
2118 if (c < 0xA0) 2118 if (c < 0xA0)
@@ -2121,7 +2121,7 @@ emacs_mule_char (struct coding_system *coding, const unsigned char *src,
2121 } 2121 }
2122 else 2122 else
2123 { 2123 {
2124 if (! (charset = emacs_mule_charset[c])) 2124 if ((charset_id = emacs_mule_charset[c]) < 0)
2125 goto invalid_code; 2125 goto invalid_code;
2126 ONE_MORE_BYTE (c); 2126 ONE_MORE_BYTE (c);
2127 if (c < 0xA0) 2127 if (c < 0xA0)
@@ -2136,7 +2136,7 @@ emacs_mule_char (struct coding_system *coding, const unsigned char *src,
2136 2136
2137 case 4: 2137 case 4:
2138 ONE_MORE_BYTE (c); 2138 ONE_MORE_BYTE (c);
2139 if (c < 0 || ! (charset = emacs_mule_charset[c])) 2139 if (c < 0 || (charset_id = emacs_mule_charset[c]) < 0)
2140 goto invalid_code; 2140 goto invalid_code;
2141 ONE_MORE_BYTE (c); 2141 ONE_MORE_BYTE (c);
2142 if (c < 0xA0) 2142 if (c < 0xA0)
@@ -2150,21 +2150,21 @@ emacs_mule_char (struct coding_system *coding, const unsigned char *src,
2150 2150
2151 case 1: 2151 case 1:
2152 code = c; 2152 code = c;
2153 charset = CHARSET_FROM_ID (ASCII_BYTE_P (code) 2153 charset_id = ASCII_BYTE_P (code) ? charset_ascii : charset_eight_bit;
2154 ? charset_ascii : charset_eight_bit);
2155 break; 2154 break;
2156 2155
2157 default: 2156 default:
2158 abort (); 2157 abort ();
2159 } 2158 }
2160 CODING_DECODE_CHAR (coding, src, src_base, src_end, charset, code, c); 2159 CODING_DECODE_CHAR (coding, src, src_base, src_end,
2160 CHARSET_FROM_ID (charset_id), code, c);
2161 if (c < 0) 2161 if (c < 0)
2162 goto invalid_code; 2162 goto invalid_code;
2163 } 2163 }
2164 *nbytes = src - src_base; 2164 *nbytes = src - src_base;
2165 *nchars = consumed_chars; 2165 *nchars = consumed_chars;
2166 if (id) 2166 if (id)
2167 *id = charset->id; 2167 *id = charset_id;
2168 return (mseq_found ? -c : c); 2168 return (mseq_found ? -c : c);
2169 2169
2170 no_more_source: 2170 no_more_source:
@@ -9297,7 +9297,8 @@ DEFUN ("set-terminal-coding-system-internal", Fset_terminal_coding_system_intern
9297 doc: /* Internal use only. */) 9297 doc: /* Internal use only. */)
9298 (Lisp_Object coding_system, Lisp_Object terminal) 9298 (Lisp_Object coding_system, Lisp_Object terminal)
9299{ 9299{
9300 struct coding_system *terminal_coding = TERMINAL_TERMINAL_CODING (get_terminal (terminal, 1)); 9300 struct terminal *term = get_terminal (terminal, 1);
9301 struct coding_system *terminal_coding = TERMINAL_TERMINAL_CODING (term);
9301 CHECK_SYMBOL (coding_system); 9302 CHECK_SYMBOL (coding_system);
9302 setup_coding_system (Fcheck_coding_system (coding_system), terminal_coding); 9303 setup_coding_system (Fcheck_coding_system (coding_system), terminal_coding);
9303 /* We had better not send unsafe characters to terminal. */ 9304 /* We had better not send unsafe characters to terminal. */
@@ -9306,6 +9307,10 @@ DEFUN ("set-terminal-coding-system-internal", Fset_terminal_coding_system_intern
9306 terminal_coding->common_flags &= ~CODING_ANNOTATE_COMPOSITION_MASK; 9307 terminal_coding->common_flags &= ~CODING_ANNOTATE_COMPOSITION_MASK;
9307 terminal_coding->src_multibyte = 1; 9308 terminal_coding->src_multibyte = 1;
9308 terminal_coding->dst_multibyte = 0; 9309 terminal_coding->dst_multibyte = 0;
9310 if (terminal_coding->common_flags & CODING_REQUIRE_ENCODING_MASK)
9311 term->charset_list = coding_charset_list (terminal_coding);
9312 else
9313 term->charset_list = Fcons (make_number (charset_ascii), Qnil);
9309 return Qnil; 9314 return Qnil;
9310} 9315}
9311 9316
@@ -10554,7 +10559,7 @@ associated with each coding-category one by one in this order. When
10554one algorithm agrees with a byte sequence of source text, the coding 10559one algorithm agrees with a byte sequence of source text, the coding
10555system bound to the corresponding coding-category is selected. 10560system bound to the corresponding coding-category is selected.
10556 10561
10557Don't modify this variable directly, but use `set-coding-priority'. */); 10562Don't modify this variable directly, but use `set-coding-system-priority'. */);
10558 { 10563 {
10559 int i; 10564 int i;
10560 10565