summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);