diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2012-10-30 01:42:39 +0100 |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2012-10-30 01:42:39 +0100 |
commit | 4d0ebf454346e70e5b7c7803ab7939f7c12a2b39 (patch) | |
tree | bf7aaaeb4bea87857afe4c1929bb5559b4af1aaa /Modules/cjkcodecs | |
parent | 3512aa9ed0c61360bd5dab80a0b5c9c0edb48188 (diff) | |
download | cpython-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.h | 11 |
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) |