]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
PyMethod_Type: add a tp_descr_get slot function to ensure proper
authorGuido van Rossum <guido@python.org>
Wed, 15 Aug 2001 17:52:31 +0000 (17:52 +0000)
committerGuido van Rossum <guido@python.org>
Wed, 15 Aug 2001 17:52:31 +0000 (17:52 +0000)
binding of unbound methods.

Objects/classobject.c

index 9c015383ac914d9bd7839e4a70c5971f5b7068bc..255a432f53316d20265760d32c540f1bfcccb032 100644 (file)
@@ -2193,6 +2193,14 @@ instancemethod_call(PyObject *func, PyObject *arg, PyObject *kw)
        return result;
 }
 
+static PyObject *
+instancemethod_descr_get(PyObject *meth, PyObject *obj, PyObject *type)
+{
+       if (obj == Py_None)
+               obj = NULL;
+       return PyMethod_New(PyMethod_GET_FUNCTION(meth), obj, type);
+}
+
 PyTypeObject PyMethod_Type = {
        PyObject_HEAD_INIT(&PyType_Type)
        0,
@@ -2219,7 +2227,17 @@ PyTypeObject PyMethod_Type = {
        (traverseproc)instancemethod_traverse,  /* tp_traverse */
        0,                                      /* tp_clear */
        0,                                      /* tp_richcompare */
-       offsetof(PyMethodObject, im_weakreflist) /* tp_weaklistoffset */
+       offsetof(PyMethodObject, im_weakreflist), /* tp_weaklistoffset */
+       0,                                      /* tp_iter */
+       0,                                      /* tp_iternext */
+       0,                                      /* tp_methods */
+       0,                                      /* tp_members */
+       0,                                      /* tp_getset */
+       0,                                      /* tp_base */
+       0,                                      /* tp_dict */
+       instancemethod_descr_get,               /* tp_descr_get */
+       0,                                      /* tp_descr_set */
+       0,                                      /* tp_dictoffset */
 };
 
 /* Clear out the free list */