summaryrefslogtreecommitdiff
path: root/Modules/cjkcodecs
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2012-10-30 01:42:39 +0100
committerVictor Stinner <victor.stinner@gmail.com>2012-10-30 01:42:39 +0100
commit4d0ebf454346e70e5b7c7803ab7939f7c12a2b39 (patch)
treebf7aaaeb4bea87857afe4c1929bb5559b4af1aaa /Modules/cjkcodecs
parent3512aa9ed0c61360bd5dab80a0b5c9c0edb48188 (diff)
downloadcpython-4d0ebf454346e70e5b7c7803ab7939f7c12a2b39.tar.gz
Issue #16330: Use surrogate-related macros
Patch written by Serhiy Storchaka.
Diffstat (limited to 'Modules/cjkcodecs')
-rw-r--r--Modules/cjkcodecs/cjkcodecs.h11
1 files changed, 5 insertions, 6 deletions
diff --git a/Modules/cjkcodecs/cjkcodecs.h b/Modules/cjkcodecs/cjkcodecs.h
index ab0682a9fa..fb41bdd550 100644
--- a/Modules/cjkcodecs/cjkcodecs.h
+++ b/Modules/cjkcodecs/cjkcodecs.h
@@ -148,8 +148,8 @@ static const struct dbcs_map *mapping_list;
#if Py_UNICODE_SIZE == 2
# define WRITEUCS4(c) \
REQUIRE_OUTBUF(2) \
- (*outbuf)[0] = 0xd800 + (((c) - 0x10000) >> 10); \
- (*outbuf)[1] = 0xdc00 + (((c) - 0x10000) & 0x3ff); \
+ (*outbuf)[0] = Py_UNICODE_HIGH_SURROGATE(c); \
+ (*outbuf)[1] = Py_UNICODE_LOW_SURROGATE(c); \
NEXT_OUT(2)
#else
# define WRITEUCS4(c) \
@@ -188,11 +188,10 @@ static const struct dbcs_map *mapping_list;
#if Py_UNICODE_SIZE == 2
#define DECODE_SURROGATE(c) \
- if (c >> 10 == 0xd800 >> 10) { /* high surrogate */ \
+ if (Py_UNICODE_IS_HIGH_SURROGATE(c)) { \
REQUIRE_INBUF(2) \
- if (IN2 >> 10 == 0xdc00 >> 10) { /* low surrogate */ \
- c = 0x10000 + ((ucs4_t)(c - 0xd800) << 10) + \
- ((ucs4_t)(IN2) - 0xdc00); \
+ if (Py_UNICODE_IS_LOW_SURROGATE(IN2)) { \
+ c = Py_UNICODE_JOIN_SURROGATES(c, IN2) \
} \
}
#define GET_INSIZE(c) ((c) > 0xffff ? 2 : 1)