summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2011-10-11 20:12:48 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2011-10-11 20:12:48 (GMT)
commit577db2c9f0679df3762783a0e80a2e85f23ef562 (patch)
tree3422322aa38c72e0da6c4e0e78e3b904b022324d /Objects
parentd9c0631d7782de78ee5dd779112abecee37e55e8 (diff)
downloadcpython-577db2c9f0679df3762783a0e80a2e85f23ef562.zip
cpython-577db2c9f0679df3762783a0e80a2e85f23ef562.tar.gz
cpython-577db2c9f0679df3762783a0e80a2e85f23ef562.tar.bz2
PyUnicode_AsUnicodeCopy() now checks if PyUnicode_AsUnicode() failed
Diffstat (limited to 'Objects')
-rw-r--r--Objects/unicodeobject.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index f734b49..cccab53 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -13775,13 +13775,16 @@ Py_UNICODE*
PyUnicode_AsUnicodeCopy(PyObject *object)
{
PyUnicodeObject *unicode = (PyUnicodeObject *)object;
- Py_UNICODE *copy;
+ Py_UNICODE *u, *copy;
Py_ssize_t size;
if (!PyUnicode_Check(unicode)) {
PyErr_BadArgument();
return NULL;
}
+ u = PyUnicode_AsUnicode(object);
+ 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)) {
PyErr_NoMemory();
@@ -13794,7 +13797,7 @@ PyUnicode_AsUnicodeCopy(PyObject *object)
PyErr_NoMemory();
return NULL;
}
- memcpy(copy, PyUnicode_AS_UNICODE(unicode), size);
+ memcpy(copy, u, size);
return copy;
}