From: Victor Stinner Date: Thu, 30 Jan 2020 08:02:49 +0000 (+0100) Subject: bpo-38631: Replace tp_new_wrapper() fatal error with SystemError (GH-18262) X-Git-Tag: v3.9.0a4~174 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2bf127d97bd1d60ead7c20d429b0c61ef61fc554;p=thirdparty%2FPython%2Fcpython.git 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. --- diff --git a/Objects/typeobject.c b/Objects/typeobject.c index b095e2921dcf..8422a3c5a38c 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -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,