[Python-checkins] gh-99300: Use Py_NewRef() in Parser/ directory (#99330)

vstinner webhook-mailer at python.org
Thu Nov 10 09:30:19 EST 2022


https://github.com/python/cpython/commit/4ce2a202c7b573edaa0ee4a2315d5578f66737c5
commit: 4ce2a202c7b573edaa0ee4a2315d5578f66737c5
branch: main
author: Victor Stinner <vstinner at python.org>
committer: vstinner <vstinner at python.org>
date: 2022-11-10T15:30:05+01:00
summary:

gh-99300: Use Py_NewRef() in Parser/ directory (#99330)

Replace Py_INCREF() with Py_NewRef() in C files of the Parser/
directory and in the PEG generator.

files:
M Parser/pegen.c
M Parser/string_parser.c
M Parser/tokenizer.c
M Tools/peg_generator/peg_extension/peg_extension.c

diff --git a/Parser/pegen.c b/Parser/pegen.c
index 1317606749b8..d34a86e9c883 100644
--- a/Parser/pegen.c
+++ b/Parser/pegen.c
@@ -885,8 +885,7 @@ _PyPegen_run_parser_from_file_pointer(FILE *fp, int start_rule, PyObject *filena
         tok->fp_interactive = 1;
     }
     // This transfers the ownership to the tokenizer
-    tok->filename = filename_ob;
-    Py_INCREF(filename_ob);
+    tok->filename = Py_NewRef(filename_ob);
 
     // From here on we need to clean up even if there's an error
     mod_ty result = NULL;
@@ -925,8 +924,7 @@ _PyPegen_run_parser_from_string(const char *str, int start_rule, PyObject *filen
         return NULL;
     }
     // This transfers the ownership to the tokenizer
-    tok->filename = filename_ob;
-    Py_INCREF(filename_ob);
+    tok->filename = Py_NewRef(filename_ob);
 
     // We need to clear up from here on
     mod_ty result = NULL;
diff --git a/Parser/string_parser.c b/Parser/string_parser.c
index e13272c17ca3..c096bea7426e 100644
--- a/Parser/string_parser.c
+++ b/Parser/string_parser.c
@@ -417,9 +417,7 @@ fstring_compile_expr(Parser *p, const char *expr_start, const char *expr_end,
         PyMem_Free(str);
         return NULL;
     }
-    Py_INCREF(p->tok->filename);
-
-    tok->filename = p->tok->filename;
+    tok->filename = Py_NewRef(p->tok->filename);
     tok->lineno = t->lineno + lines - 1;
 
     Parser *p2 = _PyPegen_Parser_New(tok, Py_fstring_input, p->flags, p->feature_version,
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c
index 1c356d3d47c9..f2131cf39b38 100644
--- a/Parser/tokenizer.c
+++ b/Parser/tokenizer.c
@@ -2223,8 +2223,7 @@ _PyTokenizer_FindEncodingFilename(int fd, PyObject *filename)
         return NULL;
     }
     if (filename != NULL) {
-        Py_INCREF(filename);
-        tok->filename = filename;
+        tok->filename = Py_NewRef(filename);
     }
     else {
         tok->filename = PyUnicode_FromString("<string>");
diff --git a/Tools/peg_generator/peg_extension/peg_extension.c b/Tools/peg_generator/peg_extension/peg_extension.c
index 3ebb7bdd9b38..7df134b5ade8 100644
--- a/Tools/peg_generator/peg_extension/peg_extension.c
+++ b/Tools/peg_generator/peg_extension/peg_extension.c
@@ -12,8 +12,7 @@ _build_return_object(mod_ty module, int mode, PyObject *filename_ob, PyArena *ar
     } else if (mode == 1) {
         result = PyAST_mod2obj(module);
     } else {
-        result = Py_None;
-        Py_INCREF(result);
+        result = Py_NewRef(Py_None);
     }
 
     return result;



More information about the Python-checkins mailing list