Kaydet (Commit) b67cc80b authored tarafından Raymond Hettinger's avatar Raymond Hettinger

SF bug #1155938: Missing None check for __init__().

üst 6ce7ed23
......@@ -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;
}
......
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