mirror of https://github.com/python/cpython
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.
This commit is contained in:
parent
313a7513b0
commit
c88da1faa5
|
@ -81,15 +81,15 @@ struct filedescr * _PyImport_Filetab = NULL;
|
||||||
|
|
||||||
#ifdef RISCOS
|
#ifdef RISCOS
|
||||||
static const struct filedescr _PyImport_StandardFiletab[] = {
|
static const struct filedescr _PyImport_StandardFiletab[] = {
|
||||||
{"/py", "r" PY_STDIOTEXTMODE, PY_SOURCE},
|
{"/py", "U", PY_SOURCE},
|
||||||
{"/pyc", "rb", PY_COMPILED},
|
{"/pyc", "rb", PY_COMPILED},
|
||||||
{0, 0}
|
{0, 0}
|
||||||
};
|
};
|
||||||
#else
|
#else
|
||||||
static const struct filedescr _PyImport_StandardFiletab[] = {
|
static const struct filedescr _PyImport_StandardFiletab[] = {
|
||||||
{".py", "r" PY_STDIOTEXTMODE, PY_SOURCE},
|
{".py", "U", PY_SOURCE},
|
||||||
#ifdef MS_WIN32
|
#ifdef MS_WIN32
|
||||||
{".pyw", "r" PY_STDIOTEXTMODE, PY_SOURCE},
|
{".pyw", "U", PY_SOURCE},
|
||||||
#endif
|
#endif
|
||||||
{".pyc", "rb", PY_COMPILED},
|
{".pyc", "rb", PY_COMPILED},
|
||||||
{0, 0}
|
{0, 0}
|
||||||
|
@ -892,6 +892,7 @@ find_module(char *realname, PyObject *path, char *buf, size_t buflen,
|
||||||
int i, npath;
|
int i, npath;
|
||||||
size_t len, namelen;
|
size_t len, namelen;
|
||||||
struct filedescr *fdp = NULL;
|
struct filedescr *fdp = NULL;
|
||||||
|
char *filemode;
|
||||||
FILE *fp = NULL;
|
FILE *fp = NULL;
|
||||||
#ifndef RISCOS
|
#ifndef RISCOS
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
|
@ -1065,7 +1066,9 @@ find_module(char *realname, PyObject *path, char *buf, size_t buflen,
|
||||||
if (Py_VerboseFlag > 1)
|
if (Py_VerboseFlag > 1)
|
||||||
PySys_WriteStderr("# trying %s\n", buf);
|
PySys_WriteStderr("# trying %s\n", buf);
|
||||||
#endif /* !macintosh */
|
#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 (fp != NULL) {
|
||||||
if (case_ok(buf, len, namelen, name))
|
if (case_ok(buf, len, namelen, name))
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue