Commit c88da1fa authored by Jack Jansen's avatar Jack Jansen

File modes in filedescr entries are also passed to Python, so we now put "U"

in there, and convert it to "rb" (or "r" for non-universal-newline builds)
before passing it to fopen().

Fixes #561326.
parent 313a7513
......@@ -81,15 +81,15 @@ struct filedescr * _PyImport_Filetab = NULL;
#ifdef RISCOS
static const struct filedescr _PyImport_StandardFiletab[] = {
{"/py", "r" PY_STDIOTEXTMODE, PY_SOURCE},
{"/py", "U", PY_SOURCE},
{"/pyc", "rb", PY_COMPILED},
{0, 0}
};
#else
static const struct filedescr _PyImport_StandardFiletab[] = {
{".py", "r" PY_STDIOTEXTMODE, PY_SOURCE},
{".py", "U", PY_SOURCE},
#ifdef MS_WIN32
{".pyw", "r" PY_STDIOTEXTMODE, PY_SOURCE},
{".pyw", "U", PY_SOURCE},
#endif
{".pyc", "rb", PY_COMPILED},
{0, 0}
......@@ -892,6 +892,7 @@ find_module(char *realname, PyObject *path, char *buf, size_t buflen,
int i, npath;
size_t len, namelen;
struct filedescr *fdp = NULL;
char *filemode;
FILE *fp = NULL;
#ifndef RISCOS
struct stat statbuf;
......@@ -1065,7 +1066,9 @@ find_module(char *realname, PyObject *path, char *buf, size_t buflen,
if (Py_VerboseFlag > 1)
PySys_WriteStderr("# trying %s\n", buf);
#endif /* !macintosh */
fp = fopen(buf, fdp->mode);
filemode = fdp->mode;
if (filemode[0] == 'U') filemode = "r" PY_STDIOTEXTMODE;
fp = fopen(buf, filemode);
if (fp != NULL) {
if (case_ok(buf, len, namelen, name))
break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment