summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2023-11-27 18:56:27 (GMT)
committerGitHub <noreply@github.com>2023-11-27 18:56:27 (GMT)
commit43b081bfc49173405576b8eba09a6ca86aac641b (patch)
tree9767156070adabf8b71a9d1bcdc324525fa8ec34
parent054d18e883c23d7bca71714c0573c7f32f3a760b (diff)
downloadcpython-43b081bfc49173405576b8eba09a6ca86aac641b.zip
cpython-43b081bfc49173405576b8eba09a6ca86aac641b.tar.gz
cpython-43b081bfc49173405576b8eba09a6ca86aac641b.tar.bz2
[3.11] gh-112388: Fix an error that was causing the parser to try to overwrite tokenizer errors (GH-112410) (#112467)
gh-112388: Fix an error that was causing the parser to try to overwrite tokenizer errors (GH-112410) (cherry picked from commit 2c8b19174274c183eb652932871f60570123fe99) Signed-off-by: Pablo Galindo <pablogsal@gmail.com> Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
-rw-r--r--Lib/test/test_syntax.py1
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2023-11-25-22-58-49.gh-issue-112388.MU3cIM.rst2
-rw-r--r--Parser/pegen_errors.c4
3 files changed, 7 insertions, 0 deletions
diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py
index 0704908..bbd22ec 100644
--- a/Lib/test/test_syntax.py
+++ b/Lib/test/test_syntax.py
@@ -2152,6 +2152,7 @@ func(
def test_invisible_characters(self):
self._check_error('print\x17("Hello")', "invalid non-printable character")
+ self._check_error(b"with(0,,):\n\x01", "invalid non-printable character")
def test_match_call_does_not_raise_syntax_error(self):
code = """
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-11-25-22-58-49.gh-issue-112388.MU3cIM.rst b/Misc/NEWS.d/next/Core and Builtins/2023-11-25-22-58-49.gh-issue-112388.MU3cIM.rst
new file mode 100644
index 0000000..1c82be2
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-11-25-22-58-49.gh-issue-112388.MU3cIM.rst
@@ -0,0 +1,2 @@
+Fix an error that was causing the parser to try to overwrite tokenizer
+errors. Patch by pablo Galindo
diff --git a/Parser/pegen_errors.c b/Parser/pegen_errors.c
index 0053561..29d5a6e 100644
--- a/Parser/pegen_errors.c
+++ b/Parser/pegen_errors.c
@@ -212,6 +212,10 @@ exit:
void *
_PyPegen_raise_error(Parser *p, PyObject *errtype, const char *errmsg, ...)
{
+ // Bail out if we already have an error set.
+ if (p->error_indicator && PyErr_Occurred()) {
+ return NULL;
+ }
if (p->fill == 0) {
va_list va;
va_start(va, errmsg);