aboutsummaryrefslogtreecommitdiffstats
path: root/src/coding.c
diff options
context:
space:
mode:
authorKenichi Handa2010-11-25 12:55:14 +0900
committerKenichi Handa2010-11-25 12:55:14 +0900
commitb84ae584330c940010bc543fd925eddeb13fd9e2 (patch)
treec0a1ef38fd720674080b3ef1fc8e5f3cad6e7145 /src/coding.c
parentcf5314c93a722b73cbf0f3607bea152d79c3df7b (diff)
downloademacs-b84ae584330c940010bc543fd925eddeb13fd9e2.tar.gz
emacs-b84ae584330c940010bc543fd925eddeb13fd9e2.zip
Fix decoding of emacs-mule coding system.
Diffstat (limited to 'src/coding.c')
-rw-r--r--src/coding.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/coding.c b/src/coding.c
index 137e72a0ba4..9c989e1c39e 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -2078,7 +2078,7 @@ emacs_mule_char (coding, src, nbytes, nchars, id, cmp_status)
2078 const unsigned char *src_end = coding->source + coding->src_bytes; 2078 const unsigned char *src_end = coding->source + coding->src_bytes;
2079 const unsigned char *src_base = src; 2079 const unsigned char *src_base = src;
2080 int multibytep = coding->src_multibyte; 2080 int multibytep = coding->src_multibyte;
2081 struct charset *charset; 2081 int charset_id;
2082 unsigned code; 2082 unsigned code;
2083 int c; 2083 int c;
2084 int consumed_chars = 0; 2084 int consumed_chars = 0;
@@ -2088,7 +2088,7 @@ emacs_mule_char (coding, src, nbytes, nchars, id, cmp_status)
2088 if (c < 0) 2088 if (c < 0)
2089 { 2089 {
2090 c = -c; 2090 c = -c;
2091 charset = emacs_mule_charset[0]; 2091 charset_id = emacs_mule_charset[0];
2092 } 2092 }
2093 else 2093 else
2094 { 2094 {
@@ -2124,7 +2124,7 @@ emacs_mule_char (coding, src, nbytes, nchars, id, cmp_status)
2124 switch (emacs_mule_bytes[c]) 2124 switch (emacs_mule_bytes[c])
2125 { 2125 {
2126 case 2: 2126 case 2:
2127 if (! (charset = emacs_mule_charset[c])) 2127 if ((charset_id = emacs_mule_charset[c]) < 0)
2128 goto invalid_code; 2128 goto invalid_code;
2129 ONE_MORE_BYTE (c); 2129 ONE_MORE_BYTE (c);
2130 if (c < 0xA0) 2130 if (c < 0xA0)
@@ -2137,7 +2137,7 @@ emacs_mule_char (coding, src, nbytes, nchars, id, cmp_status)
2137 || c == EMACS_MULE_LEADING_CODE_PRIVATE_12) 2137 || c == EMACS_MULE_LEADING_CODE_PRIVATE_12)
2138 { 2138 {
2139 ONE_MORE_BYTE (c); 2139 ONE_MORE_BYTE (c);
2140 if (c < 0xA0 || ! (charset = emacs_mule_charset[c])) 2140 if (c < 0xA0 || (charset_id = emacs_mule_charset[c]) < 0)
2141 goto invalid_code; 2141 goto invalid_code;
2142 ONE_MORE_BYTE (c); 2142 ONE_MORE_BYTE (c);
2143 if (c < 0xA0) 2143 if (c < 0xA0)
@@ -2146,7 +2146,7 @@ emacs_mule_char (coding, src, nbytes, nchars, id, cmp_status)
2146 } 2146 }
2147 else 2147 else
2148 { 2148 {
2149 if (! (charset = emacs_mule_charset[c])) 2149 if ((charset_id = emacs_mule_charset[c]) < 0)
2150 goto invalid_code; 2150 goto invalid_code;
2151 ONE_MORE_BYTE (c); 2151 ONE_MORE_BYTE (c);
2152 if (c < 0xA0) 2152 if (c < 0xA0)
@@ -2161,7 +2161,7 @@ emacs_mule_char (coding, src, nbytes, nchars, id, cmp_status)
2161 2161
2162 case 4: 2162 case 4:
2163 ONE_MORE_BYTE (c); 2163 ONE_MORE_BYTE (c);
2164 if (c < 0 || ! (charset = emacs_mule_charset[c])) 2164 if (c < 0 || (charset_id = emacs_mule_charset[c]) < 0)
2165 goto invalid_code; 2165 goto invalid_code;
2166 ONE_MORE_BYTE (c); 2166 ONE_MORE_BYTE (c);
2167 if (c < 0xA0) 2167 if (c < 0xA0)
@@ -2175,21 +2175,21 @@ emacs_mule_char (coding, src, nbytes, nchars, id, cmp_status)
2175 2175
2176 case 1: 2176 case 1:
2177 code = c; 2177 code = c;
2178 charset = CHARSET_FROM_ID (ASCII_BYTE_P (code) 2178 charset_id = ASCII_BYTE_P (code) ? charset_ascii : charset_eight_bit;
2179 ? charset_ascii : charset_eight_bit);
2180 break; 2179 break;
2181 2180
2182 default: 2181 default:
2183 abort (); 2182 abort ();
2184 } 2183 }
2185 CODING_DECODE_CHAR (coding, src, src_base, src_end, charset, code, c); 2184 CODING_DECODE_CHAR (coding, src, src_base, src_end,
2185 CHARSET_FROM_ID (charset_id), code, c);
2186 if (c < 0) 2186 if (c < 0)
2187 goto invalid_code; 2187 goto invalid_code;
2188 } 2188 }
2189 *nbytes = src - src_base; 2189 *nbytes = src - src_base;
2190 *nchars = consumed_chars; 2190 *nchars = consumed_chars;
2191 if (id) 2191 if (id)
2192 *id = charset->id; 2192 *id = charset_id;
2193 return (mseq_found ? -c : c); 2193 return (mseq_found ? -c : c);
2194 2194
2195 no_more_source: 2195 no_more_source: