diff Python/import.c @ 6299:0054a3840a75 legacy-trunk

Crrected a flow control error that caused the wrong error message when load-module() didn't find a built-in or frozen module. Also got rid of is_frozen(), which duplicated the functionality of find_frozen()!=NULL.
author Guido van Rossum <guido@python.org>
date Tue, 09 Sep 1997 18:53:47 +0000
parents 337054e9d4fa
children b378a0886620
line wrap: on
line diff
--- a/Python/import.c	Tue Sep 09 13:58:19 1997 +0000
+++ b/Python/import.c	Tue Sep 09 18:53:47 1997 +0000
@@ -546,6 +546,7 @@
 static PyObject *load_module Py_PROTO((char *, FILE *, char *, int));
 static struct filedescr *find_module Py_PROTO((char *, PyObject *,
 					       char *, int, FILE **));
+static struct _frozen *find_frozen Py_PROTO((char *name));
 
 /* Load a package and return its module object WITH INCREMENTED
    REFERENCE COUNT */
@@ -622,22 +623,6 @@
 	return 0;
 }
 
-/* Helper to test for frozen module */
-
-static int
-is_frozen(name)
-	char *name;
-{
-	struct _frozen *p;
-	for (p = PyImport_FrozenModules; ; p++) {
-		if (p->name == NULL)
-			break;
-		if (strcmp(p->name, name) == 0)
-			return 1;
-	}
-	return 0;
-}
-
 
 /* Search the path (default sys.path) for a module.  Return the
    corresponding filedescr struct, and (via return arguments) the
@@ -666,7 +651,7 @@
 			static struct filedescr fd = {"", "", C_BUILTIN};
 			return &fd;
 		}
-		if (is_frozen(name)) {
+		if (find_frozen(name) != NULL) {
 			static struct filedescr fd = {"", "", PY_FROZEN};
 			return &fd;
 		}
@@ -837,14 +822,14 @@
 		else
 			err = PyImport_ImportFrozenModule(name);
 		if (err < 0)
-			goto failure;
+			return NULL;
 		if (err == 0) {
 			PyErr_Format(PyExc_ImportError,
 				     "Purported %s module %.200s not found",
 				     type == C_BUILTIN ?
 						"builtin" : "frozen",
 				     name);
-			goto failure;
+			return NULL;
 		}
 		modules = PyImport_GetModuleDict();
 		m = PyDict_GetItemString(modules, name);
@@ -855,13 +840,12 @@
 				type == C_BUILTIN ?
 					"builtin" : "frozen",
 				name);
-			goto failure;
+			return NULL;
 		}
 		Py_INCREF(m);
 		break;
 
 	default:
-	  failure:
 		PyErr_Format(PyExc_ImportError,
 			     "Don't know how to import %.200s (type code %d)",
 			      name, type);
@@ -1636,7 +1620,7 @@
 	char *name;
 	if (!PyArg_ParseTuple(args, "s", &name))
 		return NULL;
-	return PyInt_FromLong(is_frozen(name));
+	return PyInt_FromLong(find_frozen(name) != NULL);
 }
 
 static FILE *