Commit 4fae54cb authored by Victor Stinner's avatar Victor Stinner

In release mode, PyUnicode_InternInPlace() does nothing if the input is NULL or

not a unicode, instead of failing with a fatal error.

Use assertions in debug mode (provide better error messages).
parent 23e56682
......@@ -12893,9 +12893,13 @@ PyUnicode_InternInPlace(PyObject **p)
{
register PyUnicodeObject *s = (PyUnicodeObject *)(*p);
PyObject *t;
#ifdef Py_DEBUG
assert(s != NULL);
assert(_PyUnicode_CHECK(s));
#else
if (s == NULL || !PyUnicode_Check(s))
Py_FatalError(
"PyUnicode_InternInPlace: unicode strings only please!");
return;
#endif
/* If it's a subclass, we don't really know what putting
it in the interned dict might do. */
if (!PyUnicode_CheckExact(s))
......@@ -12903,7 +12907,7 @@ PyUnicode_InternInPlace(PyObject **p)
if (PyUnicode_CHECK_INTERNED(s))
return;
if (PyUnicode_READY(s) == -1) {
assert(0 && "ready fail in intern...");
assert(0 && "PyUnicode_READY fail in PyUnicode_InternInPlace");
return;
}
if (interned == NULL) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment