diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2011-10-11 20:12:48 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2011-10-11 20:12:48 (GMT) |
commit | 577db2c9f0679df3762783a0e80a2e85f23ef562 (patch) | |
tree | 3422322aa38c72e0da6c4e0e78e3b904b022324d /Objects | |
parent | d9c0631d7782de78ee5dd779112abecee37e55e8 (diff) | |
download | cpython-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.c | 7 |
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; } |