]> granicus.if.org Git - python/commitdiff
Afterthough: leave both leading underscores in,
authorGuido van Rossum <guido@python.org>
Sat, 24 Aug 1996 07:54:27 +0000 (07:54 +0000)
committerGuido van Rossum <guido@python.org>
Sat, 24 Aug 1996 07:54:27 +0000 (07:54 +0000)
so __spam becomes _ClassName__spam.

Python/compile.c

index ad58606e01232836a8998445829c350bb3b4e723..a9d597b2dec522caac25b978b9a61ab84468129a 100644 (file)
@@ -506,12 +506,12 @@ com_mangle(c, name, buffer, maxlen)
        char *buffer;
        int maxlen;
 {
-       /* Name mangling: __private becomes _classname_private.
+       /* Name mangling: __private becomes _classname__private.
           This is independent from how the name is used. */
        char *p;
        int nlen, plen;
        nlen = strlen(name);
-       if (nlen+1 >= maxlen)
+       if (nlen+2 >= maxlen)
                return 0; /* Don't mangle __extremely_long_names */
        if (name[nlen-1] == '_' && name[nlen-2] == '_')
                return 0; /* Don't mangle __whatever__ */
@@ -523,11 +523,11 @@ com_mangle(c, name, buffer, maxlen)
                return 0; /* Don't mangle if class is just underscores */
        plen = strlen(p);
        if (plen + nlen >= maxlen)
-               plen = maxlen-nlen-1; /* Truncate class name if too long */
-       /* buffer = "_" + p[:plen] + name[1:] # i.e. plen+nlen bytes */
+               plen = maxlen-nlen-2; /* Truncate class name if too long */
+       /* buffer = "_" + p[:plen] + name # i.e. 1+plen+nlen bytes */
        buffer[0] = '_';
        strncpy(buffer+1, p, plen);
-       strcpy(buffer+plen+1, name+1);
+       strcpy(buffer+1+plen, name);
        /* fprintf(stderr, "mangle %s -> %s\n", name, buffer); */
        return 1;
 }