Fix for SF bug 528132 (Armin Rigo): classmethod().__get__() segfault

The proper fix is not quite what was submitted; it's really better to
take the class of the object passed rather than calling PyMethod_New
with NULL pointer args, because that can then cause other core dumps
later.

I also added a testcase for the fix to classmethods() in test_descr.py.

I've already applied this to the 2.2 branch.
This commit is contained in:
Guido van Rossum 2002-03-18 03:09:06 +00:00
parent c99475e7a0
commit 7e30548285
2 changed files with 7 additions and 0 deletions

View file

@ -474,6 +474,8 @@ cm_descr_get(PyObject *self, PyObject *obj, PyObject *type)
"uninitialized classmethod object");
return NULL;
}
if (type == NULL)
type = (PyObject *)(obj->ob_type);
return PyMethod_New(cm->cm_callable,
type, (PyObject *)(type->ob_type));
}