summaryrefslogtreecommitdiffstats
path: root/Python/pythonrun.c
diff options
context:
space:
mode:
authorNice Zombies <nineteendo19d0@gmail.com>2024-12-11 09:09:34 (GMT)
committerGitHub <noreply@github.com>2024-12-11 09:09:34 (GMT)
commit487a51a1b981211c091caa2026da81cc0df7096c (patch)
treebaae409dc5649657ac4c9766f58372681f1b1cda /Python/pythonrun.c
parent20c0c8cf3849e94ab75f95e760158c398de334f2 (diff)
downloadcpython-487a51a1b981211c091caa2026da81cc0df7096c.zip
cpython-487a51a1b981211c091caa2026da81cc0df7096c.tar.gz
cpython-487a51a1b981211c091caa2026da81cc0df7096c.tar.bz2
[3.12] gh-111609: `end_offset` is ignored in subclasses of SyntaxError (#127554)
* `end_offset` is ignored in subclasses of SyntaxError * 📜🤖 Added by blurb_it. * Add test --------- Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
Diffstat (limited to 'Python/pythonrun.c')
-rw-r--r--Python/pythonrun.c62
1 files changed, 28 insertions, 34 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 5f3d249..cf84573 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -538,43 +538,37 @@ parse_syntax_error(PyObject *err, PyObject **message, PyObject **filename,
*offset = hold;
}
- if (Py_TYPE(err) == (PyTypeObject*)PyExc_SyntaxError) {
- v = PyObject_GetAttr(err, &_Py_ID(end_lineno));
- if (!v) {
- PyErr_Clear();
- *end_lineno = *lineno;
- }
- else if (v == Py_None) {
- *end_lineno = *lineno;
- Py_DECREF(v);
- } else {
- hold = PyLong_AsSsize_t(v);
- Py_DECREF(v);
- if (hold < 0 && PyErr_Occurred())
- goto finally;
- *end_lineno = hold;
- }
-
- v = PyObject_GetAttr(err, &_Py_ID(end_offset));
- if (!v) {
- PyErr_Clear();
- *end_offset = -1;
- }
- else if (v == Py_None) {
- *end_offset = -1;
- Py_DECREF(v);
- } else {
- hold = PyLong_AsSsize_t(v);
- Py_DECREF(v);
- if (hold < 0 && PyErr_Occurred())
- goto finally;
- *end_offset = hold;
- }
- } else {
- // SyntaxError subclasses
+ v = PyObject_GetAttr(err, &_Py_ID(end_lineno));
+ if (!v) {
+ PyErr_Clear();
*end_lineno = *lineno;
+ }
+ else if (v == Py_None) {
+ *end_lineno = *lineno;
+ Py_DECREF(v);
+ } else {
+ hold = PyLong_AsSsize_t(v);
+ Py_DECREF(v);
+ if (hold < 0 && PyErr_Occurred())
+ goto finally;
+ *end_lineno = hold;
+ }
+
+ v = PyObject_GetAttr(err, &_Py_ID(end_offset));
+ if (!v) {
+ PyErr_Clear();
*end_offset = -1;
}
+ else if (v == Py_None) {
+ *end_offset = -1;
+ Py_DECREF(v);
+ } else {
+ hold = PyLong_AsSsize_t(v);
+ Py_DECREF(v);
+ if (hold < 0 && PyErr_Occurred())
+ goto finally;
+ *end_offset = hold;
+ }
v = PyObject_GetAttr(err, &_Py_ID(text));
if (!v)