From c049982ea5dd26282e82d4874a0854df617ec45e Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sun, 17 Oct 2010 19:16:33 +0000 Subject: [PATCH] compiler_error(): use PyUnicode_DecodeFSDefault() to decode the filename, instead of utf-8 in strict mode. --- Python/compile.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Python/compile.c b/Python/compile.c index 1ff085909cc..fb2759650be 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -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;