diff Python/modsupport.c @ 1177:533e36de1e4d legacy-trunk

* Configure.py: use #!/usr/local/bin/python * posixmodule.c: move extern function declarations to top * listobject.c: cmp() arguments must be void* if __STDC__ * Makefile, allobjects.h, panelmodule.c, modsupport.c: get rid of strdup() -- it is a portability risk * Makefile: enclosed ranlib command in parentheses for Sequent Make which aborts if the command is not found even if '-' is present * timemodule.c: time() returns a floating point number, in microsecond precision if BSD_TIME is defined.
author Guido van Rossum <guido@python.org>
date Mon, 04 Jan 1993 09:09:59 +0000
parents 09b48604855f
children 2937897a7d8b
line wrap: on
line diff
--- a/Python/modsupport.c	Thu Dec 24 11:41:14 1992 +0000
+++ b/Python/modsupport.c	Mon Jan 04 09:09:59 1993 +0000
@@ -46,17 +46,20 @@
 {
 	object *m, *d, *v;
 	struct methodlist *ml;
-	char namebuf[256];
+	char *namebuf;
 	if ((m = add_module(name)) == NULL) {
 		fprintf(stderr, "initializing module: %s\n", name);
 		fatal("can't create a module");
 	}
 	d = getmoduledict(m);
 	for (ml = methods; ml->ml_name != NULL; ml++) {
+		namebuf = NEW(char, strlen(name) + strlen(ml->ml_name) + 2);
+		if (namebuf == NULL)
+			fatal("out of mem for method name");
 		sprintf(namebuf, "%s.%s", name, ml->ml_name);
-		v = newmethodobject(strdup(namebuf), ml->ml_meth,
+		v = newmethodobject(namebuf, ml->ml_meth,
 					(object *)NULL, ml->ml_varargs);
-		/* XXX The strdup'ed memory is never freed */
+		/* XXX The malloc'ed memory in namebuf is never freed */
 		if (v == NULL || dictinsert(d, ml->ml_name, v) != 0) {
 			fprintf(stderr, "initializing module: %s\n", name);
 			fatal("can't initialize module");