]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Added __dict to module getattr.
authorGuido van Rossum <guido@python.org>
Sun, 21 Oct 1990 22:12:30 +0000 (22:12 +0000)
committerGuido van Rossum <guido@python.org>
Sun, 21 Oct 1990 22:12:30 +0000 (22:12 +0000)
New errors.

Objects/moduleobject.c

index 7b9e0e919f989480381718a87db7d8aa45b949e5..09bbae947804a753fd7a0b7bb106d5e6fc2cecbf 100644 (file)
@@ -37,7 +37,7 @@ getmoduledict(m)
        object *m;
 {
        if (!is_moduleobject(m)) {
-               errno = EBADF;
+               err_badarg();
                return NULL;
        }
        return ((moduleobject *)m) -> md_dict;
@@ -48,10 +48,14 @@ setmoduledict(m, v)
        object *m;
        object *v;
 {
-       if (!is_moduleobject(m))
-               return errno = EBADF;
-       if (!is_dictobject(v))
-               return errno = EINVAL;
+       if (!is_moduleobject(m)) {
+               err_badarg();
+               return -1;
+       }
+       if (!is_dictobject(v)) {
+               err_badarg();
+               return -1;
+       }
        DECREF(((moduleobject *)m) -> md_dict);
        INCREF(v);
        ((moduleobject *)m) -> md_dict = v;
@@ -94,7 +98,12 @@ modulegetattr(m, name)
        moduleobject *m;
        char *name;
 {
-       object *res = dictlookup(m->md_dict, name);
+       object *res;
+       if (strcmp(name, "__dict") == 0) {
+               INCREF(m->md_dict);
+               return m->md_dict;
+       }
+       res = dictlookup(m->md_dict, name);
        if (res == NULL)
                err_setstr(NameError, name);
        else
@@ -108,6 +117,12 @@ modulesetattr(m, name, v)
        char *name;
        object *v;
 {
+       if (strcmp(name, "__dict") == 0) {
+               /* Can't allow assignment to __dict, it would screw up
+                  module's functions which still use the old dictionary. */
+               err_setstr(NameError, "__dict is a reserved member name");
+               return NULL;
+       }
        if (v == NULL)
                return dictremove(m->md_dict, name);
        else