diff Python/import.c @ 33543:a3d78d6bca51 2.3

Fix for SF bug #1029475 : reload() doesn't work with PEP 302 loaders. (Backport to 2.3 maintenance branch.)
author Phillip J. Eby <pje@telecommunity.com>
date Thu, 23 Sep 2004 05:19:27 +0000
parents 6d7d00bf1aae
children
line wrap: on
line diff
--- a/Python/import.c	Wed Sep 22 04:52:33 2004 +0000
+++ b/Python/import.c	Thu Sep 23 05:19:27 2004 +0000
@@ -2310,7 +2310,7 @@
 PyImport_ReloadModule(PyObject *m)
 {
 	PyObject *modules = PyImport_GetModuleDict();
-	PyObject *path = NULL;
+	PyObject *path = NULL, *loader = NULL;
 	char *name, *subname;
 	char buf[MAXPATHLEN+1];
 	struct filedescr *fdp;
@@ -2352,11 +2352,14 @@
 			PyErr_Clear();
 	}
 	buf[0] = '\0';
-	fdp = find_module(name, subname, path, buf, MAXPATHLEN+1, &fp, NULL);
+	fdp = find_module(name, subname, path, buf, MAXPATHLEN+1, &fp, &loader);
 	Py_XDECREF(path);
-	if (fdp == NULL)
+	if (fdp == NULL) {
+		Py_XDECREF(loader);
 		return NULL;
-	m = load_module(name, fp, buf, fdp->type, NULL);
+	}
+	m = load_module(name, fp, buf, fdp->type, loader);
+	Py_XDECREF(loader);
 	if (fp)
 		fclose(fp);
 	return m;