From: Guido van Rossum Date: Sat, 24 Aug 1996 07:54:27 +0000 (+0000) Subject: Afterthough: leave both leading underscores in, X-Git-Tag: v1.4b3~26 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d8a6d1c2e78904a36cb98e8272ad1f83aaa85c52;p=thirdparty%2FPython%2Fcpython.git Afterthough: leave both leading underscores in, so __spam becomes _ClassName__spam. --- diff --git a/Python/compile.c b/Python/compile.c index ad58606e0123..a9d597b2dec5 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -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; }