mirror of
https://github.com/python/cpython.git
synced 2024-11-28 12:31:14 +08:00
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:
parent
59bb0e077f
commit
db88ae5d66
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user