diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2010-10-17 19:16:33 +0000 |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2010-10-17 19:16:33 +0000 |
commit | f6b0658c48183a6162922a03e4b843a5d2af1bb7 (patch) | |
tree | 1eddc5d7ffca28f4ea6daef39de3d1e58edfdd63 /Python/compile.c | |
parent | aa76b5753570a74943a52cb4d01153319a4967be (diff) | |
download | cpython-f6b0658c48183a6162922a03e4b843a5d2af1bb7.tar.gz |
compiler_error(): use PyUnicode_DecodeFSDefault() to decode the filename,
instead of utf-8 in strict mode.
Diffstat (limited to 'Python/compile.c')
-rw-r--r-- | Python/compile.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/Python/compile.c b/Python/compile.c index 1ff085909c..fb2759650b 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; |