diff options
author | Guido van Rossum <guido@python.org> | 2002-03-18 03:09:06 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2002-03-18 03:09:06 (GMT) |
commit | 7e30548285226802702dcdf81c267ebeb00ce2a5 (patch) | |
tree | efe43f4314a726aed18b0a4d979bdd1a2842e370 /Objects/funcobject.c | |
parent | c99475e7a0b97ae736ed9ecf213727c952666ef0 (diff) | |
download | cpython-7e30548285226802702dcdf81c267ebeb00ce2a5.zip cpython-7e30548285226802702dcdf81c267ebeb00ce2a5.tar.gz cpython-7e30548285226802702dcdf81c267ebeb00ce2a5.tar.bz2 |
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.
Diffstat (limited to 'Objects/funcobject.c')
-rw-r--r-- | Objects/funcobject.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/Objects/funcobject.c b/Objects/funcobject.c index f24cbcf..426b8f4 100644 --- a/Objects/funcobject.c +++ b/Objects/funcobject.c @@ -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)); } |