diff Python/compile.c @ 4131:6b589334e0e9 legacy-trunk

Afterthough: leave both leading underscores in, so __spam becomes _ClassName__spam.
author Guido van Rossum <guido@python.org>
date Sat, 24 Aug 1996 07:54:27 +0000
parents 7b84dae97ee8
children 46d736fb9da3
line wrap: on
line diff
--- a/Python/compile.c	Sat Aug 24 07:29:04 1996 +0000
+++ b/Python/compile.c	Sat Aug 24 07:54:27 1996 +0000
@@ -506,12 +506,12 @@
 	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 @@
 		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;
 }