diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-07-28-08-33-31.gh-issue-95355.yN4XVk.rst b/Misc/NEWS.d/next/Core and Builtins/2022-07-28-08-33-31.gh-issue-95355.yN4XVk.rst
new file mode 100644
index 0000000000000000000000000000000000000000..6a289991e0d60fa6b9f7f95a07e77a861a02cbb0
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2022-07-28-08-33-31.gh-issue-95355.yN4XVk.rst	
@@ -0,0 +1 @@
+``_PyPegen_Parser_New`` now properly detects token memory allocation errors. Patch by Honglin Zhu.
diff --git a/Parser/pegen.c b/Parser/pegen.c
index dbf105aedcf427a464482bdc5d3421a97d36847d..31e3ec05a105304b7e6244b55ff3437be342deb1 100644
--- a/Parser/pegen.c
+++ b/Parser/pegen.c
@@ -738,7 +738,7 @@ _PyPegen_Parser_New(struct tok_state *tok, int start_rule, int flags,
         return (Parser *) PyErr_NoMemory();
     }
     p->tokens[0] = PyMem_Calloc(1, sizeof(Token));
-    if (!p->tokens) {
+    if (!p->tokens[0]) {
         PyMem_Free(p->tokens);
         PyMem_Free(p);
         return (Parser *) PyErr_NoMemory();