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:
Martin v. Löwis 2002-03-03 21:30:27 +00:00
parent 290d31e2fc
commit cfeb3b6ab8
5 changed files with 55 additions and 17 deletions

View file

@ -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);
}