bpo-32381: Rewrite PyErr_ProgramText() (GH-23700)

PyErr_ProgramText() now calls PyErr_ProgramTextObject().
This commit is contained in:
Victor Stinner 2020-12-08 23:51:26 +01:00 committed by GitHub
parent 6d3dfee271
commit 815506d852
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 10 additions and 5 deletions

View File

@ -1697,13 +1697,18 @@ after_loop:
PyObject * PyObject *
PyErr_ProgramText(const char *filename, int lineno) PyErr_ProgramText(const char *filename, int lineno)
{ {
FILE *fp; if (filename == NULL) {
if (filename == NULL || *filename == '\0' || lineno <= 0) {
return NULL; return NULL;
} }
PyThreadState *tstate = _PyThreadState_GET();
fp = _Py_fopen(filename, "r" PY_STDIOTEXTMODE); PyObject *filename_obj = PyUnicode_DecodeFSDefault(filename);
return err_programtext(tstate, fp, lineno); if (filename_obj == NULL) {
PyErr_Clear();
return NULL;
}
PyObject *res = PyErr_ProgramTextObject(filename_obj, lineno);
Py_DECREF(filename_obj);
return res;
} }
PyObject * PyObject *