summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2011-09-28 20:34:18 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2011-09-28 20:34:18 (GMT)
commit506f5927691e0088adc7ac6e6d7b43ad78f1576b (patch)
tree14f6a366b49bce78fb9b39a4637a61a40e9c03f9
parent73f01c65c82b532ba0f9ce8540b84493c2f25e63 (diff)
downloadcpython-506f5927691e0088adc7ac6e6d7b43ad78f1576b.zip
cpython-506f5927691e0088adc7ac6e6d7b43ad78f1576b.tar.gz
cpython-506f5927691e0088adc7ac6e6d7b43ad78f1576b.tar.bz2
Check size of wchar_t using the preprocessor
-rw-r--r--Objects/unicodeobject.c56
1 files changed, 27 insertions, 29 deletions
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 74fb7ce..b61f058 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -830,36 +830,34 @@ _PyUnicode_Ready(PyUnicodeObject *unicode)
assert(num_surrogates == 0 &&
"FindMaxCharAndNumSurrogatePairs() messed up");
- if (sizeof(wchar_t) == 2) {
- /* We can share representations and are done. */
- unicode->data.any = _PyUnicode_WSTR(unicode);
- PyUnicode_2BYTE_DATA(unicode)[_PyUnicode_WSTR_LENGTH(unicode)] = '\0';
- _PyUnicode_LENGTH(unicode) = _PyUnicode_WSTR_LENGTH(unicode);
- _PyUnicode_STATE(unicode).kind = PyUnicode_2BYTE_KIND;
- unicode->_base.utf8 = NULL;
- unicode->_base.utf8_length = 0;
- }
- else {
- assert(sizeof(wchar_t) == 4);
-
- unicode->data.any = PyObject_MALLOC(
- 2 * (_PyUnicode_WSTR_LENGTH(unicode) + 1));
- if (!unicode->data.any) {
- PyErr_NoMemory();
- return -1;
- }
- _PyUnicode_CONVERT_BYTES(wchar_t, Py_UCS2,
- _PyUnicode_WSTR(unicode), end,
- PyUnicode_2BYTE_DATA(unicode));
- PyUnicode_2BYTE_DATA(unicode)[_PyUnicode_WSTR_LENGTH(unicode)] = '\0';
- _PyUnicode_LENGTH(unicode) = _PyUnicode_WSTR_LENGTH(unicode);
- _PyUnicode_STATE(unicode).kind = PyUnicode_2BYTE_KIND;
- unicode->_base.utf8 = NULL;
- unicode->_base.utf8_length = 0;
- PyObject_FREE(_PyUnicode_WSTR(unicode));
- _PyUnicode_WSTR(unicode) = NULL;
- _PyUnicode_WSTR_LENGTH(unicode) = 0;
+#if SIZEOF_WCHAR_T == 2
+ /* We can share representations and are done. */
+ unicode->data.any = _PyUnicode_WSTR(unicode);
+ PyUnicode_2BYTE_DATA(unicode)[_PyUnicode_WSTR_LENGTH(unicode)] = '\0';
+ _PyUnicode_LENGTH(unicode) = _PyUnicode_WSTR_LENGTH(unicode);
+ _PyUnicode_STATE(unicode).kind = PyUnicode_2BYTE_KIND;
+ unicode->_base.utf8 = NULL;
+ unicode->_base.utf8_length = 0;
+#else
+ /* sizeof(wchar_t) == 4 */
+ unicode->data.any = PyObject_MALLOC(
+ 2 * (_PyUnicode_WSTR_LENGTH(unicode) + 1));
+ if (!unicode->data.any) {
+ PyErr_NoMemory();
+ return -1;
}
+ _PyUnicode_CONVERT_BYTES(wchar_t, Py_UCS2,
+ _PyUnicode_WSTR(unicode), end,
+ PyUnicode_2BYTE_DATA(unicode));
+ PyUnicode_2BYTE_DATA(unicode)[_PyUnicode_WSTR_LENGTH(unicode)] = '\0';
+ _PyUnicode_LENGTH(unicode) = _PyUnicode_WSTR_LENGTH(unicode);
+ _PyUnicode_STATE(unicode).kind = PyUnicode_2BYTE_KIND;
+ unicode->_base.utf8 = NULL;
+ unicode->_base.utf8_length = 0;
+ PyObject_FREE(_PyUnicode_WSTR(unicode));
+ _PyUnicode_WSTR(unicode) = NULL;
+ _PyUnicode_WSTR_LENGTH(unicode) = 0;
+#endif
}
/* maxchar exeeds 16 bit, wee need 4 bytes for unicode characters */
else {