Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d8a6d1c

Browse files
committed
Afterthough: leave both leading underscores in,
so __spam becomes _ClassName__spam.
1 parent fe2236f commit d8a6d1c

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

Python/compile.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -506,12 +506,12 @@ com_mangle(c, name, buffer, maxlen)
506506
char *buffer;
507507
int maxlen;
508508
{
509-
/* Name mangling: __private becomes _classname_private.
509+
/* Name mangling: __private becomes _classname__private.
510510
This is independent from how the name is used. */
511511
char *p;
512512
int nlen, plen;
513513
nlen = strlen(name);
514-
if (nlen+1 >= maxlen)
514+
if (nlen+2 >= maxlen)
515515
return 0; /* Don't mangle __extremely_long_names */
516516
if (name[nlen-1] == '_' && name[nlen-2] == '_')
517517
return 0; /* Don't mangle __whatever__ */
@@ -523,11 +523,11 @@ com_mangle(c, name, buffer, maxlen)
523523
return 0; /* Don't mangle if class is just underscores */
524524
plen = strlen(p);
525525
if (plen + nlen >= maxlen)
526-
plen = maxlen-nlen-1; /* Truncate class name if too long */
527-
/* buffer = "_" + p[:plen] + name[1:] # i.e. plen+nlen bytes */
526+
plen = maxlen-nlen-2; /* Truncate class name if too long */
527+
/* buffer = "_" + p[:plen] + name # i.e. 1+plen+nlen bytes */
528528
buffer[0] = '_';
529529
strncpy(buffer+1, p, plen);
530-
strcpy(buffer+plen+1, name+1);
530+
strcpy(buffer+1+plen, name);
531531
/* fprintf(stderr, "mangle %s -> %s\n", name, buffer); */
532532
return 1;
533533
}

0 commit comments

Comments
 (0)