summaryrefslogtreecommitdiffstats
path: root/Objects/unicodeobject.c
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2011-11-20 17:40:27 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2011-11-20 17:40:27 (GMT)
commit2e9cfadd7c1a70ae77073b063c5a3fb825be86d7 (patch)
treeb42fd1f548fae64bd3cf78933f9fb70cc196e51a /Objects/unicodeobject.c
parent9343999597e3424a39637dedf1a1d006f7e667c5 (diff)
downloadcpython-2e9cfadd7c1a70ae77073b063c5a3fb825be86d7.zip
cpython-2e9cfadd7c1a70ae77073b063c5a3fb825be86d7.tar.gz
cpython-2e9cfadd7c1a70ae77073b063c5a3fb825be86d7.tar.bz2
Reuse surrogate macros in UTF-16 decoder
Diffstat (limited to 'Objects/unicodeobject.c')
-rw-r--r--Objects/unicodeobject.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 68e0586..b02adee 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -5339,13 +5339,12 @@ PyUnicode_DecodeUTF16Stateful(const char *s,
endinpos = ((const char *)e) + 1 - starts;
goto utf16Error;
}
- if (0xD800 <= ch && ch <= 0xDBFF) {
- Py_UNICODE ch2 = (q[ihi] << 8) | q[ilo];
+ if (Py_UNICODE_IS_HIGH_SURROGATE(ch)) {
+ Py_UCS4 ch2 = (q[ihi] << 8) | q[ilo];
q += 2;
- if (0xDC00 <= ch2 && ch2 <= 0xDFFF) {
+ if (Py_UNICODE_IS_LOW_SURROGATE(ch2)) {
if (unicode_putchar(&unicode, &outpos,
- (((ch & 0x3FF)<<10) |
- (ch2 & 0x3FF)) + 0x10000) < 0)
+ Py_UNICODE_JOIN_SURROGATES(ch, ch2)) < 0)
goto onError;
continue;
}