Fix for SF bug #1029475 : reload() doesn't work with PEP 302 loaders.

(Backport to 2.3 maintenance branch.)
This commit is contained in:
Phillip J. Eby
2004-09-23 05:19:27 +00:00
parent 6b154dfce9
commit 521cbc37af
2 changed files with 23 additions and 6 deletions

View File

@@ -2310,7 +2310,7 @@ PyObject *
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 @@ PyImport_ReloadModule(PyObject *m)
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;