mirror of
https://github.com/python/cpython.git
synced 2025-07-09 20:35:26 +00:00
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). ........
This commit is contained in:
parent
089144e511
commit
15244f7b12
7 changed files with 81 additions and 27 deletions
|
@ -1160,7 +1160,7 @@ PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit,
|
|||
d = PyModule_GetDict(m);
|
||||
if (PyDict_GetItemString(d, "__file__") == NULL) {
|
||||
PyObject *f;
|
||||
f = PyUnicode_FromString(filename);
|
||||
f = PyUnicode_DecodeFSDefault(filename);
|
||||
if (f == NULL)
|
||||
return -1;
|
||||
if (PyDict_SetItemString(d, "__file__", f) < 0) {
|
||||
|
@ -1911,7 +1911,9 @@ err_input(perrdetail *err)
|
|||
{
|
||||
PyObject *v, *w, *errtype, *errtext;
|
||||
PyObject* u = NULL;
|
||||
PyObject *filename;
|
||||
char *msg = NULL;
|
||||
|
||||
errtype = PyExc_SyntaxError;
|
||||
switch (err->error) {
|
||||
case E_ERROR:
|
||||
|
@ -2000,8 +2002,17 @@ err_input(perrdetail *err)
|
|||
errtext = PyUnicode_DecodeUTF8(err->text, strlen(err->text),
|
||||
"replace");
|
||||
}
|
||||
v = Py_BuildValue("(ziiN)", err->filename,
|
||||
err->lineno, err->offset, errtext);
|
||||
if (err->filename != NULL)
|
||||
filename = PyUnicode_DecodeFSDefault(err->filename);
|
||||
else {
|
||||
Py_INCREF(Py_None);
|
||||
filename = Py_None;
|
||||
}
|
||||
if (filename != NULL)
|
||||
v = Py_BuildValue("(NiiN)", filename,
|
||||
err->lineno, err->offset, errtext);
|
||||
else
|
||||
v = NULL;
|
||||
w = NULL;
|
||||
if (v != NULL)
|
||||
w = Py_BuildValue("(sO)", msg, v);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue