From db88ae5d666723d90c9b681fe874aa0a8fb4b04a Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 1 Dec 2011 02:15:00 +0100 Subject: 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. --- Objects/object.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Objects/object.c b/Objects/object.c index 00f1716..eea5531 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; } -- cgit v0.12