cpython: f63d34cd3714 (original) (raw)
Mercurial > cpython
changeset 86709:f63d34cd3714
Issue #18509: handle PyUnicode_Writer() error [#18509]
Victor Stinner victor.stinner@gmail.com | |
---|---|
date | Mon, 28 Oct 2013 23🔞39 +0100 |
parents | 8c25b4515b3d |
children | 071809616a64 |
files | Modules/cjkcodecs/_codecs_cn.c Modules/cjkcodecs/_codecs_hk.c Modules/cjkcodecs/_codecs_iso2022.c Modules/cjkcodecs/_codecs_jp.c Modules/cjkcodecs/_codecs_kr.c Modules/cjkcodecs/_codecs_tw.c Modules/cjkcodecs/cjkcodecs.h |
diffstat | 7 files changed, 102 insertions(+), 84 deletions(-)[+] [-] Modules/cjkcodecs/_codecs_cn.c 19 Modules/cjkcodecs/_codecs_hk.c 5 Modules/cjkcodecs/_codecs_iso2022.c 32 Modules/cjkcodecs/_codecs_jp.c 68 Modules/cjkcodecs/_codecs_kr.c 24 Modules/cjkcodecs/_codecs_tw.c 14 Modules/cjkcodecs/cjkcodecs.h 24 |
line wrap: on
line diff
--- a/Modules/cjkcodecs/_codecs_cn.c +++ b/Modules/cjkcodecs/_codecs_cn.c @@ -27,8 +27,10 @@ if ((dc1) == 0xa1 && (dc2) == 0xaa) OUTCHAR(0x2014); [](#l1.4) else if ((dc1) == 0xa8 && (dc2) == 0x44) OUTCHAR(0x2015); [](#l1.5) else if ((dc1) == 0xa1 && (dc2) == 0xa4) OUTCHAR(0x00b7); [](#l1.6)
- else TRYMAP_DEC(gb2312, writer, dc1 ^ 0x80, dc2 ^ 0x80); [](#l1.7)
- else TRYMAP_DEC(gbkext, writer, dc1, dc2);
- else if (TRYMAP_DEC(gb2312, decoded, dc1 ^ 0x80, dc2 ^ 0x80)) [](#l1.9)
OUTCHAR(decoded); \[](#l1.10)
- else if (TRYMAP_DEC(gbkext, decoded, dc1, dc2)) [](#l1.11)
OUTCHAR(decoded);[](#l1.12)
#define GBK_ENCODE(code, assi) [](#l1.14) if ((code) == 0x2014) (assi) = 0xa1aa; [](#l1.15) @@ -74,6 +76,7 @@ DECODER(gb2312) { while (inleft > 0) { unsigned char c = **inbuf;
Py_UCS4 decoded;[](#l1.20)
if (c < 0x80) { OUTCHAR(c); @@ -82,7 +85,8 @@ DECODER(gb2312) } REQUIRE_INBUF(2)
TRYMAP_DEC(gb2312, writer, c ^ 0x80, INBYTE2 ^ 0x80) {[](#l1.28)
if (TRYMAP_DEC(gb2312, decoded, c ^ 0x80, INBYTE2 ^ 0x80)) {[](#l1.29)
OUTCHAR(decoded);[](#l1.30) NEXT_IN(2);[](#l1.31) }[](#l1.32) else return 1;[](#l1.33)
@@ -131,6 +135,7 @@ DECODER(gbk) { while (inleft > 0) { unsigned char c = INBYTE1;
Py_UCS4 decoded;[](#l1.38)
if (c < 0x80) { OUTCHAR(c); @@ -236,6 +241,7 @@ DECODER(gb18030) { while (inleft > 0) { unsigned char c = INBYTE1, c2;
Py_UCS4 decoded;[](#l1.46)
if (c < 0x80) { OUTCHAR(c); @@ -284,7 +290,8 @@ DECODER(gb18030) } GBK_DECODE(c, c2, writer)
else TRYMAP_DEC(gb18030ext, writer, c, c2);[](#l1.54)
else if (TRYMAP_DEC(gb18030ext, decoded, c, c2))[](#l1.55)
OUTCHAR(decoded);[](#l1.56) else return 1;[](#l1.57)
NEXT_IN(2); @@ -372,6 +379,7 @@ DECODER(hz) { while (inleft > 0) { unsigned char c = INBYTE1;
Py_UCS4 decoded;[](#l1.64)
if (c == '~') { unsigned char c2 = INBYTE2; @@ -403,7 +411,8 @@ DECODER(hz) } else { /* GB mode */ REQUIRE_INBUF(2)
TRYMAP_DEC(gb2312, writer, c, INBYTE2) {[](#l1.72)
if (TRYMAP_DEC(gb2312, decoded, c, INBYTE2)) {[](#l1.73)
OUTCHAR(decoded);[](#l1.74) NEXT_IN(2);[](#l1.75) }[](#l1.76) else[](#l1.77)
--- a/Modules/cjkcodecs/_codecs_hk.c +++ b/Modules/cjkcodecs/_codecs_hk.c @@ -118,13 +118,14 @@ DECODER(big5hkscs) REQUIRE_INBUF(2) if (0xc6 > c || c > 0xc8 || (c < 0xc7 && INBYTE2 < 0xa1)) {
TRYMAP_DEC(big5, writer, c, INBYTE2) {[](#l2.7)
if (TRYMAP_DEC(big5, decoded, c, INBYTE2)) {[](#l2.8)
OUTCHAR(decoded);[](#l2.9) NEXT_IN(2);[](#l2.10) continue;[](#l2.11) }[](#l2.12) }[](#l2.13)
TRYMAP_DEC_CHAR(big5hkscs, decoded, c, INBYTE2)[](#l2.15)
if (TRYMAP_DEC(big5hkscs, decoded, c, INBYTE2))[](#l2.16) {[](#l2.17) int s = BH2S(c, INBYTE2);[](#l2.18) const unsigned char *hintbase;[](#l2.19)
--- a/Modules/cjkcodecs/_codecs_iso2022.c +++ b/Modules/cjkcodecs/_codecs_iso2022.c @@ -566,7 +566,7 @@ static Py_UCS4 ksx1001_decoder(const unsigned char *data) { Py_UCS4 u;
@@ -604,7 +604,7 @@ jisx0208_decoder(const unsigned char da Py_UCS4 u; if (data[0] == 0x21 && data[1] == 0x40) / F/W REVERSE SOLIDUS */ return 0xff3c;
@@ -643,7 +643,7 @@ static Py_UCS4 jisx0212_decoder(const unsigned char *data) { Py_UCS4 u;
@@ -697,11 +697,11 @@ jisx0213_2000_1_decoder(const unsigned c EMULATE_JISX0213_2000_DECODE_PLANE1(u, data[0], data[1]) else if (data[0] == 0x21 && data[1] == 0x40) /* F/W REVERSE SOLIDUS */ return 0xff3c;
- else TRYMAP_DEC_CHAR(jisx0208, u, data[0], data[1]);
- else TRYMAP_DEC_CHAR(jisx0213_1_bmp, u, data[0], data[1]);
- else TRYMAP_DEC_CHAR(jisx0213_1_emp, u, data[0], data[1])
- else if (TRYMAP_DEC(jisx0208, u, data[0], data[1]));
- else if (TRYMAP_DEC(jisx0213_1_bmp, u, data[0], data[1]));
- else if (TRYMAP_DEC(jisx0213_1_emp, u, data[0], data[1])) u |= 0x20000;
- else if (TRYMAP_DEC(jisx0213_pair, u, data[0], data[1])); else return MAP_UNMAPPABLE; return u; @@ -712,8 +712,8 @@ jisx0213_2000_2_decoder(const unsigned c { Py_UCS4 u; EMULATE_JISX0213_2000_DECODE_PLANE2_CHAR(u, data[0], data[1])
- TRYMAP_DEC_CHAR(jisx0213_2_bmp, u, data[0], data[1]);
- else TRYMAP_DEC_CHAR(jisx0213_2_emp, u, data[0], data[1])
- if (TRYMAP_DEC(jisx0213_2_bmp, u, data[0], data[1]));
- else if (TRYMAP_DEC(jisx0213_2_emp, u, data[0], data[1])) u |= 0x20000; else return MAP_UNMAPPABLE;
@@ -727,11 +727,11 @@ jisx0213_2004_1_decoder(const unsigned c Py_UCS4 u; if (data[0] == 0x21 && data[1] == 0x40) /* F/W REVERSE SOLIDUS */ return 0xff3c;
- else TRYMAP_DEC_CHAR(jisx0208, u, data[0], data[1]);
- else TRYMAP_DEC_CHAR(jisx0213_1_bmp, u, data[0], data[1]);
- else TRYMAP_DEC_CHAR(jisx0213_1_emp, u, data[0], data[1])
- else if (TRYMAP_DEC(jisx0208, u, data[0], data[1]));
- else if (TRYMAP_DEC(jisx0213_1_bmp, u, data[0], data[1]));
- else if (TRYMAP_DEC(jisx0213_1_emp, u, data[0], data[1])) u |= 0x20000;
- else if (TRYMAP_DEC(jisx0213_pair, u, data[0], data[1])); else return MAP_UNMAPPABLE; return u; @@ -741,8 +741,8 @@ static Py_UCS4 jisx0213_2004_2_decoder(const unsigned char *data) { Py_UCS4 u;
- TRYMAP_DEC_CHAR(jisx0213_2_bmp, u, data[0], data[1]);
- else TRYMAP_DEC_CHAR(jisx0213_2_emp, u, data[0], data[1])
- if (TRYMAP_DEC(jisx0213_2_bmp, u, data[0], data[1]));
- else if (TRYMAP_DEC(jisx0213_2_emp, u, data[0], data[1])) u |= 0x20000; else return MAP_UNMAPPABLE;
@@ -950,7 +950,7 @@ static Py_UCS4 gb2312_decoder(const unsigned char *data) { Py_UCS4 u;
--- a/Modules/cjkcodecs/_codecs_jp.c +++ b/Modules/cjkcodecs/_codecs_jp.c @@ -85,6 +85,7 @@ DECODER(cp932) { while (inleft > 0) { unsigned char c = INBYTE1, c2;
Py_UCS4 decoded;[](#l4.7)
if (c <= 0x80) { OUTCHAR(c); @@ -109,7 +110,8 @@ DECODER(cp932) REQUIRE_INBUF(2) c2 = INBYTE2;
TRYMAP_DEC(cp932ext, writer, c, c2);[](#l4.15)
if (TRYMAP_DEC(cp932ext, decoded, c, c2))[](#l4.16)
OUTCHAR(decoded);[](#l4.17) else if ((c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xea)){[](#l4.18) if (c2 < 0x40 || (c2 > 0x7e && c2 < 0x80) || c2 > 0xfc)[](#l4.19) return 1;[](#l4.20)
@@ -119,8 +121,10 @@ DECODER(cp932) c = (2 * c + (c2 < 0x5e ? 0 : 1) + 0x21); c2 = (c2 < 0x5e ? c2 : c2 - 0x5e) + 0x21;
TRYMAP_DEC(jisx0208, writer, c, c2);[](#l4.25)
else return 1;[](#l4.26)
if (TRYMAP_DEC(jisx0208, decoded, c, c2))[](#l4.27)
OUTCHAR(decoded);[](#l4.28)
else[](#l4.29)
return 1;[](#l4.30) }[](#l4.31) else if (c >= 0xf0 && c <= 0xf9) {[](#l4.32) if ((c2 >= 0x40 && c2 <= 0x7e) ||[](#l4.33)
@@ -235,7 +239,7 @@ DECODER(euc_jis_2004) { while (inleft > 0) { unsigned char c = INBYTE1;
Py_UCS4 code;[](#l4.38)
Py_UCS4 code, decoded;[](#l4.39)
if (c < 0x80) { OUTCHAR(c); @@ -265,13 +269,15 @@ DECODER(euc_jis_2004) /* JIS X 0213 Plane 2 or JIS X 0212 (see NOTES) */ EMULATE_JISX0213_2000_DECODE_PLANE2(writer, c2, c3)
else TRYMAP_DEC(jisx0213_2_bmp, writer, c2, c3) ;[](#l4.47)
else TRYMAP_DEC_CHAR(jisx0213_2_emp, code, c2, c3) {[](#l4.48)
else if (TRYMAP_DEC(jisx0213_2_bmp, decoded, c2, c3))[](#l4.49)
OUTCHAR(decoded);[](#l4.50)
else if (TRYMAP_DEC(jisx0213_2_emp, code, c2, c3)) {[](#l4.51) OUTCHAR(EMPBASE | code);[](#l4.52) NEXT_IN(3);[](#l4.53) continue;[](#l4.54) }[](#l4.55)
else TRYMAP_DEC(jisx0212, writer, c2, c3) ;[](#l4.56)
else if (TRYMAP_DEC(jisx0212, decoded, c2, c3))[](#l4.57)
OUTCHAR(decoded);[](#l4.58) else return 1;[](#l4.59) NEXT_IN(3);[](#l4.60) }[](#l4.61)
@@ -286,14 +292,16 @@ DECODER(euc_jis_2004) EMULATE_JISX0213_2000_DECODE_PLANE1(writer, c, c2) else if (c == 0x21 && c2 == 0x40) OUTCHAR(0xff3c); else if (c == 0x22 && c2 == 0x32) OUTCHAR(0xff5e);
else TRYMAP_DEC(jisx0208, writer, c, c2);[](#l4.66)
else TRYMAP_DEC(jisx0213_1_bmp, writer, c, c2);[](#l4.67)
else TRYMAP_DEC_CHAR(jisx0213_1_emp, code, c, c2) {[](#l4.68)
else if (TRYMAP_DEC(jisx0208, decoded, c, c2))[](#l4.69)
OUTCHAR(decoded);[](#l4.70)
else if (TRYMAP_DEC(jisx0213_1_bmp, decoded, c, c2))[](#l4.71)
OUTCHAR(decoded);[](#l4.72)
else if (TRYMAP_DEC(jisx0213_1_emp, code, c, c2)) {[](#l4.73) OUTCHAR(EMPBASE | code);[](#l4.74) NEXT_IN(2);[](#l4.75) continue;[](#l4.76) }[](#l4.77)
else TRYMAP_DEC_CHAR(jisx0213_pair, code, c, c2) {[](#l4.78)
else if (TRYMAP_DEC(jisx0213_pair, code, c, c2)) {[](#l4.79) OUTCHAR2(code >> 16, code & 0xffff);[](#l4.80) NEXT_IN(2);[](#l4.81) continue;[](#l4.82)
@@ -367,6 +375,7 @@ DECODER(euc_jp) { while (inleft > 0) { unsigned char c = INBYTE1;
Py_UCS4 decoded;[](#l4.87)
if (c < 0x80) { OUTCHAR(c); @@ -394,7 +403,8 @@ DECODER(euc_jp) c2 = INBYTE2; c3 = INBYTE3; /* JIS X 0212 */
TRYMAP_DEC(jisx0212, writer, c2 ^ 0x80, c3 ^ 0x80) {[](#l4.95)
if (TRYMAP_DEC(jisx0212, decoded, c2 ^ 0x80, c3 ^ 0x80)) {[](#l4.96)
OUTCHAR(decoded);[](#l4.97) NEXT_IN(3);[](#l4.98) }[](#l4.99) else[](#l4.100)
@@ -412,9 +422,10 @@ DECODER(euc_jp) OUTCHAR(0xff3c); else #endif
TRYMAP_DEC(jisx0208, writer,[](#l4.105)
c ^ 0x80, c2 ^ 0x80) ;[](#l4.106)
else return 1;[](#l4.107)
if (TRYMAP_DEC(jisx0208, decoded, c ^ 0x80, c2 ^ 0x80))[](#l4.108)
OUTCHAR(decoded);[](#l4.109)
else[](#l4.110)
} @@ -486,6 +497,7 @@ DECODER(shift_jis) { while (inleft > 0) { unsigned char c = INBYTE1;return 1;[](#l4.111) NEXT_IN(2);[](#l4.112) }[](#l4.113)
Py_UCS4 decoded;[](#l4.119)
#ifdef STRICT_BUILD JISX0201_R_DECODE(c, writer) @@ -514,7 +526,8 @@ DECODER(shift_jis) continue; } #endif
TRYMAP_DEC(jisx0208, writer, c1, c2) {[](#l4.127)
if (TRYMAP_DEC(jisx0208, decoded, c1, c2)) {[](#l4.128)
OUTCHAR(decoded);[](#l4.129) NEXT_IN(2);[](#l4.130) continue;[](#l4.131) }[](#l4.132)
@@ -636,7 +649,7 @@ DECODER(shift_jis_2004) JISX0201_DECODE(c, writer) else if ((c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xfc)){ unsigned char c1, c2;
Py_UCS4 code;[](#l4.137)
Py_UCS4 code, decoded;[](#l4.138)
REQUIRE_INBUF(2) c2 = INBYTE2; @@ -652,17 +665,14 @@ DECODER(shift_jis_2004) c1 += 0x21; EMULATE_JISX0213_2000_DECODE_PLANE1(writer, c1, c2)
else TRYMAP_DEC(jisx0208, writer, c1, c2) {[](#l4.146)
}[](#l4.147)
else TRYMAP_DEC(jisx0213_1_bmp, writer,[](#l4.148)
c1, c2) {[](#l4.149)
}[](#l4.150)
else TRYMAP_DEC_CHAR(jisx0213_1_emp, code, c1, c2) {[](#l4.151)
else if (TRYMAP_DEC(jisx0208, decoded, c1, c2))[](#l4.152)
OUTCHAR(decoded);[](#l4.153)
else if (TRYMAP_DEC(jisx0213_1_bmp, decoded, c1, c2))[](#l4.154)
OUTCHAR(decoded);[](#l4.155)
else if (TRYMAP_DEC(jisx0213_1_emp, code, c1, c2))[](#l4.156) OUTCHAR(EMPBASE | code);[](#l4.157)
}[](#l4.158)
else TRYMAP_DEC_CHAR(jisx0213_pair, code, c1, c2) {[](#l4.159)
else if (TRYMAP_DEC(jisx0213_pair, code, c1, c2))[](#l4.160) OUTCHAR2(code >> 16, code & 0xffff);[](#l4.161)
}[](#l4.162) else[](#l4.163) return 1;[](#l4.164) NEXT_IN(2);[](#l4.165)
@@ -674,9 +684,9 @@ DECODER(shift_jis_2004) EMULATE_JISX0213_2000_DECODE_PLANE2(writer, c1, c2)
else TRYMAP_DEC(jisx0213_2_bmp, writer,[](#l4.170)
c1, c2) {[](#l4.171)
} else TRYMAP_DEC_CHAR(jisx0213_2_emp, code, c1, c2) {[](#l4.172)
else if (TRYMAP_DEC(jisx0213_2_bmp, decoded, c1, c2))[](#l4.173)
OUTCHAR(decoded);[](#l4.174)
else if (TRYMAP_DEC(jisx0213_2_emp, code, c1, c2)) {[](#l4.175) OUTCHAR(EMPBASE | code);[](#l4.176) NEXT_IN(2);[](#l4.177) continue;[](#l4.178)
--- a/Modules/cjkcodecs/_codecs_kr.c +++ b/Modules/cjkcodecs/_codecs_kr.c @@ -105,6 +105,7 @@ DECODER(euc_kr) { while (inleft > 0) { unsigned char c = INBYTE1;
Py_UCS4 decoded;[](#l5.7)
if (c < 0x80) { OUTCHAR(c); @@ -148,7 +149,8 @@ DECODER(euc_kr) OUTCHAR(0xac00 + cho588 + jung28 + jong); NEXT_IN(8); }
else TRYMAP_DEC(ksx1001, writer, c ^ 0x80, INBYTE2 ^ 0x80) {[](#l5.15)
else if (TRYMAP_DEC(ksx1001, decoded, c ^ 0x80, INBYTE2 ^ 0x80)) {[](#l5.16)
OUTCHAR(decoded);[](#l5.17) NEXT_IN(2);[](#l5.18) }[](#l5.19) else[](#l5.20)
@@ -198,6 +200,7 @@ DECODER(cp949) { while (inleft > 0) { unsigned char c = INBYTE1;
Py_UCS4 decoded;[](#l5.25)
if (c < 0x80) { OUTCHAR(c); @@ -206,8 +209,10 @@ DECODER(cp949) } REQUIRE_INBUF(2)
TRYMAP_DEC(ksx1001, writer, c ^ 0x80, INBYTE2 ^ 0x80);[](#l5.33)
else TRYMAP_DEC(cp949ext, writer, c, INBYTE2);[](#l5.34)
if (TRYMAP_DEC(ksx1001, decoded, c ^ 0x80, INBYTE2 ^ 0x80))[](#l5.35)
OUTCHAR(decoded);[](#l5.36)
else if (TRYMAP_DEC(cp949ext, decoded, c, INBYTE2))[](#l5.37)
OUTCHAR(decoded);[](#l5.38) else return 1;[](#l5.39)
NEXT_IN(2); @@ -350,7 +355,8 @@ static const unsigned char johabjamo_jon DECODER(johab) { while (inleft > 0) {
unsigned char c = INBYTE1, c2;[](#l5.46)
unsigned char c = INBYTE1, c2;[](#l5.47)
Py_UCS4 decoded;[](#l5.48)
if (c < 0x80) { OUTCHAR(c); @@ -424,9 +430,13 @@ DECODER(johab) t1 = t1 + (t2 < 0x5e ? 0 : 1) + 0x21; t2 = (t2 < 0x5e ? t2 : t2 - 0x5e) + 0x21;
TRYMAP_DEC(ksx1001, writer, t1, t2);[](#l5.56)
else return 1;[](#l5.57)
NEXT_IN(2);[](#l5.58)
if (TRYMAP_DEC(ksx1001, decoded, t1, t2)) {[](#l5.59)
OUTCHAR(decoded);[](#l5.60)
NEXT_IN(2);[](#l5.61)
}[](#l5.62)
else {[](#l5.63)
return 1;[](#l5.64)
}}[](#l5.65) }[](#l5.66) }[](#l5.67)
--- a/Modules/cjkcodecs/_codecs_tw.c +++ b/Modules/cjkcodecs/_codecs_tw.c @@ -44,6 +44,7 @@ DECODER(big5) { while (inleft > 0) { unsigned char c = INBYTE1;
Py_UCS4 decoded;[](#l6.7)
if (c < 0x80) { OUTCHAR(c); @@ -52,7 +53,8 @@ DECODER(big5) } REQUIRE_INBUF(2)
TRYMAP_DEC(big5, writer, c, INBYTE2) {[](#l6.15)
if (TRYMAP_DEC(big5, decoded, c, INBYTE2)) {[](#l6.16)
OUTCHAR(decoded);[](#l6.17) NEXT_IN(2);[](#l6.18) }[](#l6.19) else return 1;[](#l6.20)
@@ -98,6 +100,7 @@ DECODER(cp950) { while (inleft > 0) { unsigned char c = INBYTE1;
Py_UCS4 decoded;[](#l6.25)
if (c < 0x80) { OUTCHAR(c); @@ -107,9 +110,12 @@ DECODER(cp950) REQUIRE_INBUF(2)
TRYMAP_DEC(cp950ext, writer, c, INBYTE2);[](#l6.33)
else TRYMAP_DEC(big5, writer, c, INBYTE2);[](#l6.34)
else return 1;[](#l6.35)
if (TRYMAP_DEC(cp950ext, decoded, c, INBYTE2))[](#l6.36)
OUTCHAR(decoded);[](#l6.37)
else if (TRYMAP_DEC(big5, decoded, c, INBYTE2))[](#l6.38)
OUTCHAR(decoded);[](#l6.39)
else[](#l6.40)
return 1;[](#l6.41)
--- a/Modules/cjkcodecs/cjkcodecs.h +++ b/Modules/cjkcodecs/cjkcodecs.h @@ -177,29 +177,13 @@ static const struct dbcs_map *mapping_li #define TRYMAP_ENC(charset, assi, uni) [](#l7.4) if TRYMAP_ENC_COND(charset, assi, uni) -Py_LOCAL_INLINE(int) -_TRYMAP_DEC_WRITE(_PyUnicodeWriter *writer, Py_UCS4 c) -{
- if (c == UNIINV || _PyUnicodeWriter_WriteChar(writer, c) < 0)
return UNIINV;[](#l7.11)
- else
return c;[](#l7.13)
-} - -#define _TRYMAP_DEC(m, writer, val) [](#l7.16)
- ((m)->map != NULL && [](#l7.17)
(val) >= (m)->bottom && \[](#l7.18)
(val)<= (m)->top && \[](#l7.19)
_TRYMAP_DEC_WRITE(writer, (m)->map[(val) - (m)->bottom]) != UNIINV)[](#l7.20)
-#define _TRYMAP_DEC_CHAR(m, assi, val) [](#l7.21) +#define _TRYMAP_DEC(m, assi, val) [](#l7.22) ((m)->map != NULL && [](#l7.23) (val) >= (m)->bottom && [](#l7.24) (val)<= (m)->top && [](#l7.25) ((assi) = (m)->map[(val) - (m)->bottom]) != UNIINV) -#define TRYMAP_DEC(charset, writer, c1, c2) [](#l7.27)
-#define TRYMAP_DEC_CHAR(charset, assi, c1, c2) [](#l7.29)
+#define TRYMAP_DEC(charset, assi, c1, c2) [](#l7.31)
#define _TRYMAP_ENC_MPLANE(m, assplane, asshi, asslo, val) [](#l7.34) ((m)->map != NULL && (val) >= (m)->bottom && [](#l7.35) @@ -210,8 +194,6 @@ Py_LOCAL_INLINE(int) #define TRYMAP_ENC_MPLANE(charset, assplane, asshi, asslo, uni) [](#l7.37) if _TRYMAP_ENC_MPLANE(&charset##_encmap[(uni) >> 8], [](#l7.38) assplane, asshi, asslo, (uni) & 0xff) -#define TRYMAP_DEC_MPLANE(charset, writer, plane, c1, c2) [](#l7.40)
#define BEGIN_MAPPINGS_LIST static const struct dbcs_map _mapping_list[] = { #define MAPPING_ENCONLY(enc) {#enc, (void*)enc##_encmap, NULL},