From: Sergey Fedoseev Date: Wed, 16 Jun 2021 13:04:38 +0000 (+0500) Subject: bpo-38211: Clean up type_init() (GH-16257) X-Git-Tag: v3.11.0a1~847 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ab030d6f9d73e7f6c2213c2e308d1ceb04761485;p=thirdparty%2FPython%2Fcpython.git bpo-38211: Clean up type_init() (GH-16257) 1. Remove conditions already checked by assert() 2. Remove object_init() call that effectively creates an empty tuple and checks that this tuple is empty --- diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 170929f5d850..fbe3d165a609 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -2428,41 +2428,26 @@ valid_identifier(PyObject *s) return 1; } -/* Forward */ -static int -object_init(PyObject *self, PyObject *args, PyObject *kwds); - static int type_init(PyObject *cls, PyObject *args, PyObject *kwds) { - int res; - assert(args != NULL && PyTuple_Check(args)); assert(kwds == NULL || PyDict_Check(kwds)); - if (kwds != NULL && PyTuple_Check(args) && PyTuple_GET_SIZE(args) == 1 && - PyDict_Check(kwds) && PyDict_GET_SIZE(kwds) != 0) { + if (kwds != NULL && PyTuple_GET_SIZE(args) == 1 && + PyDict_GET_SIZE(kwds) != 0) { PyErr_SetString(PyExc_TypeError, "type.__init__() takes no keyword arguments"); return -1; } - if (args != NULL && PyTuple_Check(args) && - (PyTuple_GET_SIZE(args) != 1 && PyTuple_GET_SIZE(args) != 3)) { + if ((PyTuple_GET_SIZE(args) != 1 && PyTuple_GET_SIZE(args) != 3)) { PyErr_SetString(PyExc_TypeError, "type.__init__() takes 1 or 3 arguments"); return -1; } - /* Call object.__init__(self) now. */ - /* XXX Could call super(type, cls).__init__() but what's the point? */ - args = PyTuple_GetSlice(args, 0, 0); - if (args == NULL) { - return -1; - } - res = object_init(cls, args, NULL); - Py_DECREF(args); - return res; + return 0; } unsigned long