Commit 952fa2dc authored by Barry Warsaw's avatar Barry Warsaw

instancemethod_setattro(): Raise TypeError if an attempt is made to

set a function attribute on a method (either bound or unbound).  This
reverts to Python 2.0 behavior that no attributes of the method are
writable, but provides a more informative error message.
parent db8d46b1
......@@ -1866,21 +1866,8 @@ instancemethod_setattro(register PyMethodObject *im, PyObject *name,
{
char *sname = PyString_AsString(name);
if (PyEval_GetRestricted() ||
strcmp(sname, "im_func") == 0 ||
strcmp(sname, "im_self") == 0 ||
strcmp(sname, "im_class") == 0)
{
PyErr_Format(PyExc_TypeError, "read-only attribute: %s",
sname);
PyErr_Format(PyExc_TypeError, "read-only attribute: %s", sname);
return -1;
}
if (im->im_self != NULL) {
PyErr_Format(PyExc_TypeError,
"cannot set attributes through bound methods");
return -1;
}
return PyObject_SetAttr(im->im_func, name, v);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment