]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
PyUnicode_AsUnicodeCopy() now checks if PyUnicode_AsUnicode() failed
authorVictor Stinner <victor.stinner@haypocalc.com>
Tue, 11 Oct 2011 20:12:48 +0000 (22:12 +0200)
committerVictor Stinner <victor.stinner@haypocalc.com>
Tue, 11 Oct 2011 20:12:48 +0000 (22:12 +0200)
Objects/unicodeobject.c

index f734b49e8b04bb347a84f1422e166af239cf3e66..cccab539f89b4d35d1b13711484775adbc07d40a 100644 (file)
@@ -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;
 }