mirror of
https://github.com/python/cpython.git
synced 2025-09-09 18:32:22 +00:00
Patch #50002: Display line information for bad \x escapes:
- recognize "SyntaxError"s by the print_file_and_line attribute. - add the syntaxerror attributes to all exceptions in compile.c. Fixes #221791
This commit is contained in:
parent
290d31e2fc
commit
cfeb3b6ab8
5 changed files with 55 additions and 17 deletions
|
@ -561,7 +561,9 @@ PyErr_WarnExplicit(PyObject *category, char *message,
|
|||
}
|
||||
|
||||
|
||||
/* XXX There's a comment missing here */
|
||||
/* Set file and line information for the current exception.
|
||||
If the exception is not a SyntaxError, also sets additional attributes
|
||||
to make printing of exceptions believe it is a syntax error. */
|
||||
|
||||
void
|
||||
PyErr_SyntaxLocation(char *filename, int lineno)
|
||||
|
@ -596,6 +598,26 @@ PyErr_SyntaxLocation(char *filename, int lineno)
|
|||
Py_DECREF(tmp);
|
||||
}
|
||||
}
|
||||
if (PyObject_SetAttrString(v, "offset", Py_None)) {
|
||||
PyErr_Clear();
|
||||
}
|
||||
if (exc != PyExc_SyntaxError) {
|
||||
if (!PyObject_HasAttrString(v, "msg")) {
|
||||
tmp = PyObject_Str(v);
|
||||
if (tmp) {
|
||||
if (PyObject_SetAttrString(v, "msg", tmp))
|
||||
PyErr_Clear();
|
||||
Py_DECREF(tmp);
|
||||
} else {
|
||||
PyErr_Clear();
|
||||
}
|
||||
}
|
||||
if (!PyObject_HasAttrString(v, "print_file_and_line")) {
|
||||
if (PyObject_SetAttrString(v, "print_file_and_line",
|
||||
Py_None))
|
||||
PyErr_Clear();
|
||||
}
|
||||
}
|
||||
PyErr_Restore(exc, v, tb);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue