From: Victor Stinner Date: Mon, 3 Oct 2011 00:01:52 +0000 (+0200) Subject: In release mode, PyUnicode_InternInPlace() does nothing if the input is NULL or X-Git-Tag: v3.3.0a1~1380 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4fae54cb0ee1f8b9959025fd3e75795e4c634a0f;p=thirdparty%2FPython%2Fcpython.git 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). --- diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 3eec75aae0ca..29788b3c4106 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -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) {