Skip to content

Commit 6f4730c

Browse files
committed
Initialize staticmethod/classmethod callables in tp_new
1 parent c3b31ea commit 6f4730c

File tree

1 file changed

+24
-13
lines changed

1 file changed

+24
-13
lines changed

Objects/funcobject.c

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1555,8 +1555,16 @@ static PyMethodDef cm_methodlist[] = {
15551555
{NULL} /* Sentinel */
15561556
};
15571557

1558-
static PyObject *cm_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
1559-
static PyObject *sm_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
1558+
static PyObject *
1559+
cm_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
1560+
{
1561+
classmethod *cm = (classmethod *)PyType_GenericAlloc(type, 0);
1562+
if (cm == NULL)
1563+
return NULL;
1564+
cm->cm_callable = Py_NewRef(Py_None);
1565+
cm->cm_dict = NULL;
1566+
return (PyObject *)cm;
1567+
}
15601568

15611569
static PyObject*
15621570
cm_repr(PyObject *self)
@@ -1642,6 +1650,7 @@ PyClassMethod_New(PyObject *callable)
16421650
return (PyObject *)cm;
16431651
}
16441652

1653+
<<<<<<< HEAD
16451654
static PyObject *
16461655
cm_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
16471656
{
@@ -1653,6 +1662,8 @@ cm_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
16531662
cm->cm_dict = NULL;
16541663
return (PyObject *)cm;
16551664
}
1665+
=======
1666+
>>>>>>> c60a558e2e4 (Initialize staticmethod/classmethod callables in tp_new)
16561667

16571668

16581669
/* Static method object */
@@ -1816,6 +1827,17 @@ sm_repr(PyObject *self)
18161827
return PyUnicode_FromFormat("<staticmethod(%R)>", callable);
18171828
}
18181829

1830+
static PyObject *
1831+
sm_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
1832+
{
1833+
staticmethod *sm = (staticmethod *)PyType_GenericAlloc(type, 0);
1834+
if (sm == NULL)
1835+
return NULL;
1836+
sm->sm_callable = Py_NewRef(Py_None);
1837+
sm->sm_dict = NULL;
1838+
return (PyObject *)sm;
1839+
}
1840+
18191841
PyDoc_STRVAR(staticmethod_doc,
18201842
"staticmethod(function, /)\n\
18211843
--\n\
@@ -1889,14 +1911,3 @@ PyStaticMethod_New(PyObject *callable)
18891911
}
18901912
return (PyObject *)sm;
18911913
}
1892-
1893-
static PyObject *
1894-
sm_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
1895-
{
1896-
staticmethod *sm = (staticmethod *)PyType_GenericAlloc(type, 0);
1897-
if (sm == NULL)
1898-
return NULL;
1899-
sm->sm_callable = Py_NewRef(Py_None);
1900-
sm->sm_dict = NULL;
1901-
return (PyObject *)sm;
1902-
}

0 commit comments

Comments
 (0)