summaryrefslogtreecommitdiffstats
path: root/Python/errors.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/errors.c')
-rw-r--r--Python/errors.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/Python/errors.c b/Python/errors.c
index 213108f..9bac7ba 100644
--- a/Python/errors.c
+++ b/Python/errors.c
@@ -1697,13 +1697,18 @@ after_loop:
PyObject *
PyErr_ProgramText(const char *filename, int lineno)
{
- FILE *fp;
- if (filename == NULL || *filename == '\0' || lineno <= 0) {
+ if (filename == NULL) {
return NULL;
}
- PyThreadState *tstate = _PyThreadState_GET();
- fp = _Py_fopen(filename, "r" PY_STDIOTEXTMODE);
- return err_programtext(tstate, fp, lineno);
+
+ PyObject *filename_obj = PyUnicode_DecodeFSDefault(filename);
+ if (filename_obj == NULL) {
+ PyErr_Clear();
+ return NULL;
+ }
+ PyObject *res = PyErr_ProgramTextObject(filename_obj, lineno);
+ Py_DECREF(filename_obj);
+ return res;
}
PyObject *