diff --git a/Objects/object.c b/Objects/object.c
index f2d801b..73fba50 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -45,14 +45,15 @@
 	typeobject *tp;
 
 	for (tp = type_list; tp; tp = tp->tp_next)
-		printf("%s alloc'd: %d, freed: %d, max in use: %d\n",
-		       tp->tp_name, tp->tp_alloc, tp->tp_free,
-		       tp->tp_maxalloc);
-	printf("fast tuple allocs: %d, empty: %d\n", fast_tuple_allocs,
-	       tuple_zero_allocs);
-	printf("fast int allocs: pos: %d, neg: %d\n", quick_int_allocs,
-	       quick_neg_int_allocs);
-	printf("null strings: %d, 1-strings: %d\n", null_strings, one_strings);
+		fprintf(stderr, "%s alloc'd: %d, freed: %d, max in use: %d\n",
+			tp->tp_name, tp->tp_alloc, tp->tp_free,
+			tp->tp_maxalloc);
+	fprintf(stderr, "fast tuple allocs: %d, empty: %d\n",
+		fast_tuple_allocs, tuple_zero_allocs);
+	fprintf(stderr, "fast int allocs: pos: %d, neg: %d\n",
+		quick_int_allocs, quick_neg_int_allocs);
+	fprintf(stderr, "null strings: %d, 1-strings: %d\n",
+		null_strings, one_strings);
 }
 
 void
diff --git a/Python/import.c b/Python/import.c
index f0d4828..c0f163a 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -228,7 +228,6 @@
 		pyc_mtime = rd_long(fpc);
 		if (mtime != -1 && mtime > pyc_mtime) {
 			fclose(fpc);
-			fp = fopen(namebuf, "rb");
 			goto read_py;
 		}
 		if (magic == MAGIC) {
@@ -247,40 +246,46 @@
 				fprintf(stderr,
 			"import %s # precompiled from \"%s\"\n",
 					name, namebuf);
-			else
+			else {
 				fprintf(stderr,
 				"# invalid precompiled file \"%s\"\n",
 					namebuf);
-		}
-	}
-	else if ((fp = find_module(name, PY_SUFFIX, "r",
-				   namebuf, &mtime)) != NULL) {
-read_py:
-		namelen = strlen(namebuf);
-		if (co == NULL) {
-			if (verbose)
-				fprintf(stderr,
-					"import %s # from \"%s\"\n",
-					name, namebuf);
-			err = parse_file(fp, namebuf, file_input, &n);
-		} else
-			err = E_DONE;
-		fclose(fp);
-		if (err != E_DONE) {
-			err_input(err);
-			return NULL;
+				goto read_py;
+			}
 		}
 	}
 	else {
-		if (m == NULL) {
-			sprintf(namebuf, "no module named %.200s", name);
-			err_setstr(ImportError, namebuf);
+read_py:
+		if ((fp = find_module(name, PY_SUFFIX, "r",
+				      namebuf, &mtime)) != NULL) {
+			namelen = strlen(namebuf);
+			if (co == NULL) {
+				if (verbose)
+					fprintf(stderr,
+						"import %s # from \"%s\"\n",
+						name, namebuf);
+				err = parse_file(fp, namebuf, file_input, &n);
+			} else
+				err = E_DONE;
+			fclose(fp);
+			if (err != E_DONE) {
+				err_input(err);
+				return NULL;
+			}
 		}
 		else {
-			sprintf(namebuf, "no source for module %.200s", name);
-			err_setstr(ImportError, namebuf);
+			if (m == NULL) {
+				sprintf(namebuf, "no module named %.200s",
+					name);
+				err_setstr(ImportError, namebuf);
+			}
+			else {
+				sprintf(namebuf, "no source for module %.200s",
+					name);
+				err_setstr(ImportError, namebuf);
+			}
+			return NULL;
 		}
-		return NULL;
 	}
 	if (m == NULL) {
 		m = add_module(name);
