Mercurial > cpython-lru_cache-weakref
diff Python/ast.c @ 65536:42b84d3188d1 3.1
Recorded merge of revisions 85569-85570 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r85569 | victor.stinner | 2010-10-16 15:14:10 +0200 (sam., 16 oct. 2010) | 4 lines
Issue #9713, #10114: Parser functions (eg. PyParser_ASTFromFile) expects
filenames encoded to the filesystem encoding with surrogateescape error handler
(to support undecodable bytes), instead of UTF-8 in strict mode.
........
r85570 | victor.stinner | 2010-10-16 15:42:53 +0200 (sam., 16 oct. 2010) | 4 lines
Fix ast_error_finish() and err_input(): filename can be NULL
Fix my previous commit (r85569).
........
| author | Victor Stinner <victor.stinner@haypocalc.com> |
|---|---|
| date | Tue, 19 Oct 2010 01:22:07 +0000 |
| parents | 38ceeae0d1f0 |
| children | 4d9a8e84279a 3c9232a684ae |
line wrap: on
line diff
--- a/Python/ast.c Mon Oct 18 13:49:09 2010 +0000 +++ b/Python/ast.c Tue Oct 19 01:22:07 2010 +0000 @@ -102,6 +102,7 @@ ast_error_finish(const char *filename) { PyObject *type, *value, *tback, *errstr, *loc, *tmp; + PyObject *filename_obj; long lineno; assert(PyErr_Occurred()); @@ -125,7 +126,16 @@ Py_INCREF(Py_None); loc = Py_None; } - tmp = Py_BuildValue("(zlOO)", filename, lineno, Py_None, loc); + if (filename != NULL) + filename_obj = PyUnicode_DecodeFSDefault(filename); + else { + Py_INCREF(Py_None); + filename_obj = Py_None; + } + if (filename_obj != NULL) + tmp = Py_BuildValue("(NlOO)", filename_obj, lineno, Py_None, loc); + else + tmp = NULL; Py_DECREF(loc); if (!tmp) { Py_DECREF(errstr);
