From: Victor Stinner Date: Thu, 1 Dec 2011 01:15:00 +0000 (+0100) Subject: PyObject_Repr() ensures that the result is a ready Unicode string X-Git-Tag: v3.3.0a1~706 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=db88ae5d666723d90c9b681fe874aa0a8fb4b04a;p=thirdparty%2FPython%2Fcpython.git PyObject_Repr() ensures that the result is a ready Unicode string And PyObject_Str() and PyObject_Repr() don't make strings ready in debug mode to ensure that the caller makes the string ready before using it. --- diff --git a/Objects/object.c b/Objects/object.c index 00f171633d4c..eea55318ebcc 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -385,6 +385,10 @@ PyObject_Repr(PyObject *v) Py_DECREF(res); return NULL; } +#ifndef Py_DEBUG + if (PyUnicode_READY(res) < 0) + return NULL; +#endif return res; } @@ -403,8 +407,10 @@ PyObject_Str(PyObject *v) if (v == NULL) return PyUnicode_FromString(""); if (PyUnicode_CheckExact(v)) { +#ifndef Py_DEBUG if (PyUnicode_READY(v) < 0) return NULL; +#endif Py_INCREF(v); return v; } @@ -426,8 +432,10 @@ PyObject_Str(PyObject *v) Py_DECREF(res); return NULL; } +#ifndef Py_DEBUG if (PyUnicode_READY(res) < 0) return NULL; +#endif assert(_PyUnicode_CheckConsistency(res, 1)); return res; }