From 94472a0374f68fc7c746671eb87dc32253b02f05 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 4 Sep 1992 09:45:18 +0000 Subject: classobject.c moduleobject.c stdwinmodule.c xxobject.c: raise AttributeError, not KeyError, when attribute deletion fails. sunaudiodevmodule.c: check for deletion before calling setmember. --- Objects/moduleobject.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'Objects/moduleobject.c') diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c index bbe927cf66..aedba35bca 100644 --- a/Objects/moduleobject.c +++ b/Objects/moduleobject.c @@ -132,11 +132,16 @@ module_setattr(m, name, v) object *v; { if (strcmp(name, "__dict__") == 0 || strcmp(name, "__name__") == 0) { - err_setstr(TypeError, "can't assign to reserved member name"); + err_setstr(TypeError, "read-only special attribute"); return -1; } - if (v == NULL) - return dictremove(m->md_dict, name); + if (v == NULL) { + int rv = dictremove(m->md_dict, name); + if (rv < 0) + err_setstr(AttributeError, + "delete non-existing module attribute"); + return rv; + } else return dictinsert(m->md_dict, name, v); } -- cgit v1.2.1