From ab030d6f9d73e7f6c2213c2e308d1ceb04761485 Mon Sep 17 00:00:00 2001 From: Sergey Fedoseev Date: Wed, 16 Jun 2021 18:04:38 +0500 Subject: [PATCH] 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 --- Objects/typeobject.c | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 170929f5d85..fbe3d165a60 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