compiler_error(): use PyUnicode_DecodeFSDefault() to decode the filename,

instead of utf-8 in strict mode.
This commit is contained in:
Victor Stinner 2010-10-17 19:16:33 +00:00
parent 15a71cdad2
commit c049982ea5
1 changed files with 11 additions and 2 deletions

View File

@ -3361,7 +3361,7 @@ compiler_in_loop(struct compiler *c) {
static int
compiler_error(struct compiler *c, const char *errstr)
{
PyObject *loc;
PyObject *loc, *filename;
PyObject *u = NULL, *v = NULL;
loc = PyErr_ProgramText(c->c_filename, c->u->u_lineno);
@ -3369,7 +3369,16 @@ compiler_error(struct compiler *c, const char *errstr)
Py_INCREF(Py_None);
loc = Py_None;
}
u = Py_BuildValue("(ziiO)", c->c_filename, c->u->u_lineno,
if (c->c_filename != NULL) {
filename = PyUnicode_DecodeFSDefault(c->c_filename);
if (!filename)
goto exit;
}
else {
Py_INCREF(Py_None);
filename = Py_None;
}
u = Py_BuildValue("(NiiO)", filename, c->u->u_lineno,
c->u->u_col_offset, loc);
if (!u)
goto exit;