bpo-1635741: _ast uses PyModule_AddObjectRef() (GH-23146)
Replace PyModule_AddObject() with PyModule_AddObjectRef() in the _ast
module (Python-ast.c).
diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py
index 9fec7ae..34bd701 100755
--- a/Parser/asdl_c.py
+++ b/Parser/asdl_c.py
@@ -1115,10 +1115,9 @@ def visitModule(self, mod):
self.emit('if (state == NULL) {', 1)
self.emit('return -1;', 2)
self.emit('}', 1)
- self.emit('if (PyModule_AddObject(m, "AST", state->AST_type) < 0) {', 1)
+ self.emit('if (PyModule_AddObjectRef(m, "AST", state->AST_type) < 0) {', 1)
self.emit('return -1;', 2)
self.emit('}', 1)
- self.emit('Py_INCREF(state->AST_type);', 1)
self.emit('if (PyModule_AddIntMacro(m, PyCF_ALLOW_TOP_LEVEL_AWAIT) < 0) {', 1)
self.emit("return -1;", 2)
self.emit('}', 1)
@@ -1166,11 +1165,10 @@ def visitConstructor(self, cons, name):
self.addObj(cons.name)
def addObj(self, name):
- self.emit("if (PyModule_AddObject(m, \"%s\", "
+ self.emit("if (PyModule_AddObjectRef(m, \"%s\", "
"state->%s_type) < 0) {" % (name, name), 1)
self.emit("return -1;", 2)
self.emit('}', 1)
- self.emit("Py_INCREF(state->%s_type);" % name, 1)
class StaticVisitor(PickleVisitor):