diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2011-04-22 22:41:19 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2011-04-22 22:41:19 (GMT) |
commit | c68b6aaec8b08caf682ebb7c95f94ddf49a6b66c (patch) | |
tree | a282727782624c5d77359ac82c6ab9b7b4bc4886 | |
parent | 5569e9b1507ac0ff18fec433a7733a0185dde7b0 (diff) | |
download | cpython-c68b6aaec8b08caf682ebb7c95f94ddf49a6b66c.zip cpython-c68b6aaec8b08caf682ebb7c95f94ddf49a6b66c.tar.gz cpython-c68b6aaec8b08caf682ebb7c95f94ddf49a6b66c.tar.bz2 |
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.
-rw-r--r-- | Lib/test/test_imp.py | 3 | ||||
-rw-r--r-- | Parser/tokenizer.c | 5 |
2 files changed, 7 insertions, 1 deletions
diff --git a/Lib/test/test_imp.py b/Lib/test/test_imp.py index d745ae9..6f5b06a 100644 --- a/Lib/test/test_imp.py +++ b/Lib/test/test_imp.py @@ -170,6 +170,9 @@ class ImportTests(unittest.TestCase): support.unlink(init_file_name + ext) support.rmtree(test_package_name) + def test_issue9319(self): + imp.find_module("test/badsyntax_pep3120") + class ReloadTests(unittest.TestCase): diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index 3f6be2f..5ba12a4 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -586,7 +586,10 @@ decoding_fgets(char *s, int size, struct tok_state *tok) if (badchar) { /* Need to add 1 to the line number, since this line has not been counted, yet. */ - filename = PyUnicode_DecodeFSDefault(tok->filename); + if (tok->filename != NULL) + filename = PyUnicode_DecodeFSDefault(tok->filename); + else + filename = PyUnicode_FromString("<file>"); if (filename != NULL) { PyErr_Format(PyExc_SyntaxError, "Non-UTF-8 code starting with '\\x%.2x' " |