Kaydet (Commit) 8dd79cf7 authored tarafından Guido van Rossum's avatar Guido van Rossum

Don't allow assignment to attributes named __*__

üst 5113f5fd
/*********************************************************** /***********************************************************
Copyright 1991 by Stichting Mathematisch Centrum, Amsterdam, The Copyright 1991, 1992 by Stichting Mathematisch Centrum, Amsterdam, The
Netherlands. Netherlands.
All Rights Reserved All Rights Reserved
...@@ -122,6 +122,13 @@ class_setattr(op, name, v) ...@@ -122,6 +122,13 @@ class_setattr(op, name, v)
char *name; char *name;
object *v; object *v;
{ {
if (name[0] == '_' && name[1] == '_') {
int n = strlen(name);
if (name[n-1] == '_' && name[n-2] == '_') {
err_setstr(TypeError, "read-only special attribute");
return -1;
}
}
if (v == NULL) if (v == NULL)
return dictremove(op->cl_methods, name); return dictremove(op->cl_methods, name);
else else
...@@ -226,6 +233,13 @@ instance_setattr(inst, name, v) ...@@ -226,6 +233,13 @@ instance_setattr(inst, name, v)
char *name; char *name;
object *v; object *v;
{ {
if (name[0] == '_' && name[1] == '_') {
int n = strlen(name);
if (name[n-1] == '_' && name[n-2] == '_') {
err_setstr(TypeError, "read-only special attribute");
return -1;
}
}
if (v == NULL) if (v == NULL)
return dictremove(inst->in_attr, name); return dictremove(inst->in_attr, name);
else else
......
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