[Python-checkins] r85095 - python/branches/py3k/Modules/_localemodule.c

victor.stinner python-checkins at python.org
Wed Sep 29 12:30:43 CEST 2010


Author: victor.stinner
Date: Wed Sep 29 12:30:43 2010
New Revision: 85095
Log:
Issue #9979: Use PyUnicode_AsWideCharString() for _locale.strcoll()
It simplifies the code and prepare the surrogates support.
Modified:
 python/branches/py3k/Modules/_localemodule.c
Modified: python/branches/py3k/Modules/_localemodule.c
==============================================================================
--- python/branches/py3k/Modules/_localemodule.c	(original)
+++ python/branches/py3k/Modules/_localemodule.c	Wed Sep 29 12:30:43 2010
@@ -242,29 +242,16 @@
 {
 PyObject *os1, *os2, *result = NULL;
 wchar_t *ws1 = NULL, *ws2 = NULL;
- Py_ssize_t len1, len2;
 
 if (!PyArg_ParseTuple(args, "UU:strcoll", &os1, &os2))
 return NULL;
 /* Convert the unicode strings to wchar[]. */
- len1 = PyUnicode_GET_SIZE(os1) + 1;
- ws1 = PyMem_MALLOC(len1 * sizeof(wchar_t));
- if (!ws1) {
- PyErr_NoMemory();
- goto done;
- }
- if (PyUnicode_AsWideChar((PyUnicodeObject*)os1, ws1, len1) == -1)
+ ws1 = PyUnicode_AsWideCharString((PyUnicodeObject*)os1, NULL);
+ if (ws1 == NULL)
 goto done;
- ws1[len1 - 1] = 0;
- len2 = PyUnicode_GET_SIZE(os2) + 1;
- ws2 = PyMem_MALLOC(len2 * sizeof(wchar_t));
- if (!ws2) {
- PyErr_NoMemory();
- goto done;
- }
- if (PyUnicode_AsWideChar((PyUnicodeObject*)os2, ws2, len2) == -1)
+ ws2 = PyUnicode_AsWideCharString((PyUnicodeObject*)os2, NULL);
+ if (ws2 == NULL)
 goto done;
- ws2[len2 - 1] = 0;
 /* Collate the strings. */
 result = PyLong_FromLong(wcscoll(ws1, ws2));
 done:


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /