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.
This commit is contained in:
Victor Stinner 2011-12-01 02:15:00 +01:00
parent 59bb0e077f
commit db88ae5d66

View File

@ -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("<NULL>");
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;
}