Fix crash in exec when unicode filename can't be decoded.
I can't think of an easy way to test this behavior. It only occurs when the file system default encoding and the interpreter default encoding are different, such that you can open the file but not decode its name.
This commit is contained in:
parent
7218c2d2f4
commit
c5ceb251b3
|
@ -121,6 +121,7 @@ Core and builtins
|
||||||
|
|
||||||
- with and as are now keywords.
|
- with and as are now keywords.
|
||||||
|
|
||||||
|
- Bug #1664966: Fix crash in exec if Unicode filename can't be decoded.
|
||||||
|
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
|
@ -4202,6 +4202,8 @@ exec_statement(PyFrameObject *f, PyObject *prog, PyObject *globals,
|
||||||
else if (PyFile_Check(prog)) {
|
else if (PyFile_Check(prog)) {
|
||||||
FILE *fp = PyFile_AsFile(prog);
|
FILE *fp = PyFile_AsFile(prog);
|
||||||
char *name = PyString_AsString(PyFile_Name(prog));
|
char *name = PyString_AsString(PyFile_Name(prog));
|
||||||
|
if (name == NULL)
|
||||||
|
return -1;
|
||||||
PyCompilerFlags cf;
|
PyCompilerFlags cf;
|
||||||
cf.cf_flags = 0;
|
cf.cf_flags = 0;
|
||||||
if (PyEval_MergeCompilerFlags(&cf))
|
if (PyEval_MergeCompilerFlags(&cf))
|
||||||
|
|
Loading…
Reference in New Issue