mirror of https://github.com/python/cpython
SF bug #1155938: Missing None check for __init__().
This commit is contained in:
parent
6ce7ed23d0
commit
b67cc80bb9
|
@ -3965,6 +3965,18 @@ def vicious_descriptor_nonsense():
|
|||
import gc; gc.collect()
|
||||
vereq(hasattr(c, 'attr'), False)
|
||||
|
||||
def test_init():
|
||||
# SF 1155938
|
||||
class Foo(object):
|
||||
def __init__(self):
|
||||
return 10
|
||||
try:
|
||||
Foo()
|
||||
except TypeError:
|
||||
pass
|
||||
else:
|
||||
raise TestFailed, "did not test __init__() for None return"
|
||||
|
||||
|
||||
def test_main():
|
||||
weakref_segfault() # Must be first, somehow
|
||||
|
@ -4058,6 +4070,7 @@ def test_main():
|
|||
carloverre()
|
||||
filefault()
|
||||
vicious_descriptor_nonsense()
|
||||
test_init()
|
||||
|
||||
if verbose: print "All OK"
|
||||
|
||||
|
|
|
@ -10,6 +10,9 @@ What's New in Python 2.5 alpha 1?
|
|||
Core and builtins
|
||||
-----------------
|
||||
|
||||
- Bug #1155938: new style classes did not check that __init__() was
|
||||
returning None.
|
||||
|
||||
- Patch #802188: Report characters after line continuation character
|
||||
('\') with a specific error message.
|
||||
|
||||
|
|
|
@ -4753,6 +4753,12 @@ slot_tp_init(PyObject *self, PyObject *args, PyObject *kwds)
|
|||
Py_DECREF(meth);
|
||||
if (res == NULL)
|
||||
return -1;
|
||||
if (res != Py_None) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"__init__() should return None");
|
||||
Py_DECREF(res);
|
||||
return -1;
|
||||
}
|
||||
Py_DECREF(res);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue