summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2011-10-23 18:10:08 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2011-10-23 18:10:08 (GMT)
commit57ffa9d4ffcb4af84a6367a0a259b67333b33952 (patch)
tree2f97b139d4dcb1d294474d83c7a4214dc6242799 /Objects
parentaf9e4b8c29f152166a7dce34b8633d45e719442b (diff)
downloadcpython-57ffa9d4ffcb4af84a6367a0a259b67333b33952.zip
cpython-57ffa9d4ffcb4af84a6367a0a259b67333b33952.tar.gz
cpython-57ffa9d4ffcb4af84a6367a0a259b67333b33952.tar.bz2
PyUnicode_AsUnicodeCopy() uses PyUnicode_AsUnicodeAndSize() to get directly the length
Diffstat (limited to 'Objects')
-rw-r--r--Objects/unicodeobject.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index aedcec5..6c73779 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -14210,21 +14210,21 @@ Py_UNICODE*
PyUnicode_AsUnicodeCopy(PyObject *unicode)
{
Py_UNICODE *u, *copy;
- Py_ssize_t size;
+ Py_ssize_t len, size;
if (!PyUnicode_Check(unicode)) {
PyErr_BadArgument();
return NULL;
}
- u = PyUnicode_AsUnicode(unicode);
+ u = PyUnicode_AsUnicodeAndSize(unicode, &len);
if (u == NULL)
return NULL;
/* Ensure we won't overflow the size. */
- if (PyUnicode_GET_SIZE(unicode) > ((PY_SSIZE_T_MAX / sizeof(Py_UNICODE)) - 1)) {
+ if (len > ((PY_SSIZE_T_MAX / sizeof(Py_UNICODE)) - 1)) {
PyErr_NoMemory();
return NULL;
}
- size = PyUnicode_GET_SIZE(unicode) + 1; /* copy the nul character */
+ size = len + 1; /* copy the null character */
size *= sizeof(Py_UNICODE);
copy = PyMem_Malloc(size);
if (copy == NULL) {