cleanup for the issue 19081 fix - pull the file open and close outside of the

zip_searchorder scanning loop in get_module_code().
[already done in 3.3 and 3.4]
This commit is contained in:
Gregory P. Smith 2014-01-07 18:39:48 -08:00
parent 9be238d313
commit 6de7260877
1 changed files with 8 additions and 8 deletions

View File

@ -1292,6 +1292,8 @@ get_module_code(ZipImporter *self, char *fullname,
char *subname, path[MAXPATHLEN + 1];
int len;
struct st_zip_searchorder *zso;
FILE *fp;
char *archive;
subname = get_subname(fullname);
@ -1299,10 +1301,12 @@ get_module_code(ZipImporter *self, char *fullname,
if (len < 0)
return NULL;
fp = safely_reopen_archive(self, &archive);
if (fp == NULL)
return NULL;
for (zso = zip_searchorder; *zso->suffix; zso++) {
PyObject *code = NULL;
FILE *fp;
char *archive;
strcpy(path + len, zso->suffix);
if (Py_VerboseFlag > 1)
@ -1310,10 +1314,6 @@ get_module_code(ZipImporter *self, char *fullname,
PyString_AsString(self->archive),
SEP, path);
fp = safely_reopen_archive(self, &archive);
if (fp == NULL)
return NULL;
toc_entry = PyDict_GetItemString(self->files, path);
if (toc_entry != NULL) {
time_t mtime = 0;
@ -1327,7 +1327,6 @@ get_module_code(ZipImporter *self, char *fullname,
code = get_code_from_data(archive, fp, ispackage,
isbytecode, mtime,
toc_entry);
fclose(fp);
if (code == Py_None) {
/* bad magic number or non-matching mtime
in byte code, try next */
@ -1337,11 +1336,12 @@ get_module_code(ZipImporter *self, char *fullname,
if (code != NULL && p_modpath != NULL)
*p_modpath = PyString_AsString(
PyTuple_GetItem(toc_entry, 0));
fclose(fp);
return code;
}
fclose(fp);
}
PyErr_Format(ZipImportError, "can't find module '%.200s'", fullname);
fclose(fp);
return NULL;
}