Commit a4b48f19 authored by Zackery Spytz's avatar Zackery Spytz Committed by Serhiy Storchaka

bpo-34940: Fix the error handling in _check_for_legacy_statements(). (GH-9764)

parent 859c068e
...@@ -2906,7 +2906,7 @@ _check_for_legacy_statements(PySyntaxErrorObject *self, Py_ssize_t start) ...@@ -2906,7 +2906,7 @@ _check_for_legacy_statements(PySyntaxErrorObject *self, Py_ssize_t start)
*/ */
static PyObject *print_prefix = NULL; static PyObject *print_prefix = NULL;
static PyObject *exec_prefix = NULL; static PyObject *exec_prefix = NULL;
Py_ssize_t text_len = PyUnicode_GET_LENGTH(self->text); Py_ssize_t text_len = PyUnicode_GET_LENGTH(self->text), match;
int kind = PyUnicode_KIND(self->text); int kind = PyUnicode_KIND(self->text);
void *data = PyUnicode_DATA(self->text); void *data = PyUnicode_DATA(self->text);
...@@ -2929,9 +2929,12 @@ _check_for_legacy_statements(PySyntaxErrorObject *self, Py_ssize_t start) ...@@ -2929,9 +2929,12 @@ _check_for_legacy_statements(PySyntaxErrorObject *self, Py_ssize_t start)
return -1; return -1;
} }
} }
if (PyUnicode_Tailmatch(self->text, print_prefix, match = PyUnicode_Tailmatch(self->text, print_prefix,
start, text_len, -1)) { start, text_len, -1);
if (match == -1) {
return -1;
}
if (match) {
return _set_legacy_print_statement_msg(self, start); return _set_legacy_print_statement_msg(self, start);
} }
...@@ -2942,10 +2945,17 @@ _check_for_legacy_statements(PySyntaxErrorObject *self, Py_ssize_t start) ...@@ -2942,10 +2945,17 @@ _check_for_legacy_statements(PySyntaxErrorObject *self, Py_ssize_t start)
return -1; return -1;
} }
} }
if (PyUnicode_Tailmatch(self->text, exec_prefix, match = PyUnicode_Tailmatch(self->text, exec_prefix, start, text_len, -1);
start, text_len, -1)) { if (match == -1) {
Py_XSETREF(self->msg, return -1;
PyUnicode_FromString("Missing parentheses in call to 'exec'")); }
if (match) {
PyObject *msg = PyUnicode_FromString("Missing parentheses in call "
"to 'exec'");
if (msg == NULL) {
return -1;
}
Py_XSETREF(self->msg, msg);
return 1; return 1;
} }
/* Fall back to the default error message */ /* Fall back to the default error message */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment