mirror of https://github.com/python/cpython
Afterthough: leave both leading underscores in,
so __spam becomes _ClassName__spam.
This commit is contained in:
parent
fe2236f3c8
commit
d8a6d1c2e7
|
@ -506,12 +506,12 @@ com_mangle(c, name, buffer, maxlen)
|
||||||
char *buffer;
|
char *buffer;
|
||||||
int maxlen;
|
int maxlen;
|
||||||
{
|
{
|
||||||
/* Name mangling: __private becomes _classname_private.
|
/* Name mangling: __private becomes _classname__private.
|
||||||
This is independent from how the name is used. */
|
This is independent from how the name is used. */
|
||||||
char *p;
|
char *p;
|
||||||
int nlen, plen;
|
int nlen, plen;
|
||||||
nlen = strlen(name);
|
nlen = strlen(name);
|
||||||
if (nlen+1 >= maxlen)
|
if (nlen+2 >= maxlen)
|
||||||
return 0; /* Don't mangle __extremely_long_names */
|
return 0; /* Don't mangle __extremely_long_names */
|
||||||
if (name[nlen-1] == '_' && name[nlen-2] == '_')
|
if (name[nlen-1] == '_' && name[nlen-2] == '_')
|
||||||
return 0; /* Don't mangle __whatever__ */
|
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 */
|
return 0; /* Don't mangle if class is just underscores */
|
||||||
plen = strlen(p);
|
plen = strlen(p);
|
||||||
if (plen + nlen >= maxlen)
|
if (plen + nlen >= maxlen)
|
||||||
plen = maxlen-nlen-1; /* Truncate class name if too long */
|
plen = maxlen-nlen-2; /* Truncate class name if too long */
|
||||||
/* buffer = "_" + p[:plen] + name[1:] # i.e. plen+nlen bytes */
|
/* buffer = "_" + p[:plen] + name # i.e. 1+plen+nlen bytes */
|
||||||
buffer[0] = '_';
|
buffer[0] = '_';
|
||||||
strncpy(buffer+1, p, plen);
|
strncpy(buffer+1, p, plen);
|
||||||
strcpy(buffer+plen+1, name+1);
|
strcpy(buffer+1+plen, name);
|
||||||
/* fprintf(stderr, "mangle %s -> %s\n", name, buffer); */
|
/* fprintf(stderr, "mangle %s -> %s\n", name, buffer); */
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue