mirror of https://github.com/python/cpython
ensure the attribute name string is initalized before using it (closes #16839)
This commit is contained in:
parent
5ca88d2b18
commit
6b3f8d375b
|
@ -9,6 +9,9 @@ What's New in Python 2.7.4
|
|||
Core and Builtins
|
||||
-----------------
|
||||
|
||||
- Issue #16839: Fix a segfault when calling unicode() on a classic class early
|
||||
in interpreter initialization.
|
||||
|
||||
- Issue #16761: Calling ``int()`` and ``long()`` with *base* argument only
|
||||
now raises TypeError.
|
||||
|
||||
|
|
|
@ -474,7 +474,7 @@ PyObject_Unicode(PyObject *v)
|
|||
PyObject *func;
|
||||
PyObject *str;
|
||||
int unicode_method_found = 0;
|
||||
static PyObject *unicodestr;
|
||||
static PyObject *unicodestr = NULL;
|
||||
|
||||
if (v == NULL) {
|
||||
res = PyString_FromString("<NULL>");
|
||||
|
@ -491,6 +491,11 @@ PyObject_Unicode(PyObject *v)
|
|||
if (PyInstance_Check(v)) {
|
||||
/* We're an instance of a classic class */
|
||||
/* Try __unicode__ from the instance -- alas we have no type */
|
||||
if (!unicodestr) {
|
||||
unicodestr = PyString_InternFromString("__unicode__");
|
||||
if (!unicodestr)
|
||||
return NULL;
|
||||
}
|
||||
func = PyObject_GetAttr(v, unicodestr);
|
||||
if (func != NULL) {
|
||||
unicode_method_found = 1;
|
||||
|
|
Loading…
Reference in New Issue