mirror of https://github.com/python/cpython
bpo-38631: Replace tp_new_wrapper() fatal error with SystemError (GH-18262)
tp_new_wrapper() now raises a SystemError if called with non-type self, rather than calling Py_FatalError() which cannot be catched.
This commit is contained in:
parent
7a1f6c2da4
commit
2bf127d97b
|
@ -6042,8 +6042,12 @@ tp_new_wrapper(PyObject *self, PyObject *args, PyObject *kwds)
|
|||
PyTypeObject *type, *subtype, *staticbase;
|
||||
PyObject *arg0, *res;
|
||||
|
||||
if (self == NULL || !PyType_Check(self))
|
||||
Py_FatalError("__new__() called with non-type 'self'");
|
||||
if (self == NULL || !PyType_Check(self)) {
|
||||
PyErr_Format(PyExc_SystemError,
|
||||
"__new__() called with non-type 'self'");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
type = (PyTypeObject *)self;
|
||||
if (!PyTuple_Check(args) || PyTuple_GET_SIZE(args) < 1) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
|
|
Loading…
Reference in New Issue