From 91cc8fb92b5d59d26cfca0167b32f6f25b453849 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Thu, 20 Nov 2008 20:01:57 +0000 Subject: Fix for bug 4360 "SystemError when method has both super() & closure". Patch by amaury.forgeotdarc and reviewed by brett.cannon. Also add release notes about the known problems with the email package. --- Objects/typeobject.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'Objects/typeobject.c') diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 7f9a26dd0a..b6ffe92379 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -6170,8 +6170,9 @@ super_init(PyObject *self, PyObject *args, PyObject *kwds) assert(PyUnicode_Check(name)); if (!PyUnicode_CompareWithASCIIString(name, "__class__")) { - PyObject *cell = - f->f_localsplus[co->co_nlocals + i]; + Py_ssize_t index = co->co_nlocals + + PyTuple_GET_SIZE(co->co_cellvars) + i; + PyObject *cell = f->f_localsplus[index]; if (cell == NULL || !PyCell_Check(cell)) { PyErr_SetString(PyExc_SystemError, "super(): bad __class__ cell"); -- cgit v1.2.1