Issue #9319: Fix a crash on parsing a Python source code without encoding
cookie and not valid in UTF-8: use "<file>" as the filename instead of reading from NULL.
This commit is contained in:
parent
5569e9b150
commit
c68b6aaec8
|
@ -170,6 +170,9 @@ class ImportTests(unittest.TestCase):
|
||||||
support.unlink(init_file_name + ext)
|
support.unlink(init_file_name + ext)
|
||||||
support.rmtree(test_package_name)
|
support.rmtree(test_package_name)
|
||||||
|
|
||||||
|
def test_issue9319(self):
|
||||||
|
imp.find_module("test/badsyntax_pep3120")
|
||||||
|
|
||||||
|
|
||||||
class ReloadTests(unittest.TestCase):
|
class ReloadTests(unittest.TestCase):
|
||||||
|
|
||||||
|
|
|
@ -586,7 +586,10 @@ decoding_fgets(char *s, int size, struct tok_state *tok)
|
||||||
if (badchar) {
|
if (badchar) {
|
||||||
/* Need to add 1 to the line number, since this line
|
/* Need to add 1 to the line number, since this line
|
||||||
has not been counted, yet. */
|
has not been counted, yet. */
|
||||||
|
if (tok->filename != NULL)
|
||||||
filename = PyUnicode_DecodeFSDefault(tok->filename);
|
filename = PyUnicode_DecodeFSDefault(tok->filename);
|
||||||
|
else
|
||||||
|
filename = PyUnicode_FromString("<file>");
|
||||||
if (filename != NULL) {
|
if (filename != NULL) {
|
||||||
PyErr_Format(PyExc_SyntaxError,
|
PyErr_Format(PyExc_SyntaxError,
|
||||||
"Non-UTF-8 code starting with '\\x%.2x' "
|
"Non-UTF-8 code starting with '\\x%.2x' "
|
||||||
|
|
Loading…
Reference in New Issue