bpo-38823: Fix refleaks in _ast initialization error path (GH-17276)

This commit is contained in:
Brandt Bucher 2020-02-06 06:45:46 -08:00 committed by GitHub
parent 54b4f14712
commit d2f9667264
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 372 additions and 184 deletions

View File

@ -998,17 +998,25 @@ class ASTModuleVisitor(PickleVisitor):
self.emit("if (!init_types()) return NULL;", 1) self.emit("if (!init_types()) return NULL;", 1)
self.emit('m = PyState_FindModule(&_astmodule);', 1) self.emit('m = PyState_FindModule(&_astmodule);', 1)
self.emit("if (!m) return NULL;", 1) self.emit("if (!m) return NULL;", 1)
self.emit('if (PyModule_AddObject(m, "AST", astmodulestate_global->AST_type) < 0) {', 1)
self.emit('goto error;', 2)
self.emit('}', 1)
self.emit('Py_INCREF(astmodulestate(m)->AST_type);', 1) self.emit('Py_INCREF(astmodulestate(m)->AST_type);', 1)
self.emit('if (PyModule_AddObject(m, "AST", astmodulestate_global->AST_type) < 0) return NULL;', 1) self.emit('if (PyModule_AddIntMacro(m, PyCF_ALLOW_TOP_LEVEL_AWAIT) < 0) {', 1)
self.emit('if (PyModule_AddIntMacro(m, PyCF_ALLOW_TOP_LEVEL_AWAIT) < 0)', 1) self.emit("goto error;", 2)
self.emit("return NULL;", 2) self.emit('}', 1)
self.emit('if (PyModule_AddIntMacro(m, PyCF_ONLY_AST) < 0)', 1) self.emit('if (PyModule_AddIntMacro(m, PyCF_ONLY_AST) < 0) {', 1)
self.emit("return NULL;", 2) self.emit("goto error;", 2)
self.emit('if (PyModule_AddIntMacro(m, PyCF_TYPE_COMMENTS) < 0)', 1) self.emit('}', 1)
self.emit("return NULL;", 2) self.emit('if (PyModule_AddIntMacro(m, PyCF_TYPE_COMMENTS) < 0) {', 1)
self.emit("goto error;", 2)
self.emit('}', 1)
for dfn in mod.dfns: for dfn in mod.dfns:
self.visit(dfn) self.visit(dfn)
self.emit("return m;", 1) self.emit("return m;", 1)
self.emit("error:", 0)
self.emit("Py_DECREF(m);", 1)
self.emit("return NULL;", 1)
self.emit("}", 0) self.emit("}", 0)
def visitProduct(self, prod, name): def visitProduct(self, prod, name):
@ -1024,7 +1032,9 @@ class ASTModuleVisitor(PickleVisitor):
def addObj(self, name): def addObj(self, name):
self.emit("if (PyModule_AddObject(m, \"%s\", " self.emit("if (PyModule_AddObject(m, \"%s\", "
"astmodulestate_global->%s_type) < 0) return NULL;" % (name, name), 1) "astmodulestate_global->%s_type) < 0) {" % (name, name), 1)
self.emit("goto error;", 2)
self.emit('}', 1)
self.emit("Py_INCREF(astmodulestate(m)->%s_type);" % name, 1) self.emit("Py_INCREF(astmodulestate(m)->%s_type);" % name, 1)

530
Python/Python-ast.c generated
View File

@ -9887,355 +9887,533 @@ PyInit__ast(void)
if (!init_types()) return NULL; if (!init_types()) return NULL;
m = PyState_FindModule(&_astmodule); m = PyState_FindModule(&_astmodule);
if (!m) return NULL; if (!m) return NULL;
if (PyModule_AddObject(m, "AST", astmodulestate_global->AST_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->AST_type); Py_INCREF(astmodulestate(m)->AST_type);
if (PyModule_AddObject(m, "AST", astmodulestate_global->AST_type) < 0) if (PyModule_AddIntMacro(m, PyCF_ALLOW_TOP_LEVEL_AWAIT) < 0) {
return NULL; goto error;
if (PyModule_AddIntMacro(m, PyCF_ALLOW_TOP_LEVEL_AWAIT) < 0) }
return NULL; if (PyModule_AddIntMacro(m, PyCF_ONLY_AST) < 0) {
if (PyModule_AddIntMacro(m, PyCF_ONLY_AST) < 0) goto error;
return NULL; }
if (PyModule_AddIntMacro(m, PyCF_TYPE_COMMENTS) < 0) if (PyModule_AddIntMacro(m, PyCF_TYPE_COMMENTS) < 0) {
return NULL; goto error;
if (PyModule_AddObject(m, "mod", astmodulestate_global->mod_type) < 0) }
return NULL; if (PyModule_AddObject(m, "mod", astmodulestate_global->mod_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->mod_type); Py_INCREF(astmodulestate(m)->mod_type);
if (PyModule_AddObject(m, "Module", astmodulestate_global->Module_type) < if (PyModule_AddObject(m, "Module", astmodulestate_global->Module_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Module_type); Py_INCREF(astmodulestate(m)->Module_type);
if (PyModule_AddObject(m, "Interactive", if (PyModule_AddObject(m, "Interactive",
astmodulestate_global->Interactive_type) < 0) return NULL; astmodulestate_global->Interactive_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Interactive_type); Py_INCREF(astmodulestate(m)->Interactive_type);
if (PyModule_AddObject(m, "Expression", if (PyModule_AddObject(m, "Expression",
astmodulestate_global->Expression_type) < 0) return NULL; astmodulestate_global->Expression_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Expression_type); Py_INCREF(astmodulestate(m)->Expression_type);
if (PyModule_AddObject(m, "FunctionType", if (PyModule_AddObject(m, "FunctionType",
astmodulestate_global->FunctionType_type) < 0) return NULL; astmodulestate_global->FunctionType_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->FunctionType_type); Py_INCREF(astmodulestate(m)->FunctionType_type);
if (PyModule_AddObject(m, "Suite", astmodulestate_global->Suite_type) < 0) if (PyModule_AddObject(m, "Suite", astmodulestate_global->Suite_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Suite_type); Py_INCREF(astmodulestate(m)->Suite_type);
if (PyModule_AddObject(m, "stmt", astmodulestate_global->stmt_type) < 0) if (PyModule_AddObject(m, "stmt", astmodulestate_global->stmt_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->stmt_type); Py_INCREF(astmodulestate(m)->stmt_type);
if (PyModule_AddObject(m, "FunctionDef", if (PyModule_AddObject(m, "FunctionDef",
astmodulestate_global->FunctionDef_type) < 0) return NULL; astmodulestate_global->FunctionDef_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->FunctionDef_type); Py_INCREF(astmodulestate(m)->FunctionDef_type);
if (PyModule_AddObject(m, "AsyncFunctionDef", if (PyModule_AddObject(m, "AsyncFunctionDef",
astmodulestate_global->AsyncFunctionDef_type) < 0) return NULL; astmodulestate_global->AsyncFunctionDef_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->AsyncFunctionDef_type); Py_INCREF(astmodulestate(m)->AsyncFunctionDef_type);
if (PyModule_AddObject(m, "ClassDef", astmodulestate_global->ClassDef_type) if (PyModule_AddObject(m, "ClassDef", astmodulestate_global->ClassDef_type)
< 0) return NULL; < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->ClassDef_type); Py_INCREF(astmodulestate(m)->ClassDef_type);
if (PyModule_AddObject(m, "Return", astmodulestate_global->Return_type) < if (PyModule_AddObject(m, "Return", astmodulestate_global->Return_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Return_type); Py_INCREF(astmodulestate(m)->Return_type);
if (PyModule_AddObject(m, "Delete", astmodulestate_global->Delete_type) < if (PyModule_AddObject(m, "Delete", astmodulestate_global->Delete_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Delete_type); Py_INCREF(astmodulestate(m)->Delete_type);
if (PyModule_AddObject(m, "Assign", astmodulestate_global->Assign_type) < if (PyModule_AddObject(m, "Assign", astmodulestate_global->Assign_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Assign_type); Py_INCREF(astmodulestate(m)->Assign_type);
if (PyModule_AddObject(m, "AugAssign", if (PyModule_AddObject(m, "AugAssign",
astmodulestate_global->AugAssign_type) < 0) return NULL; astmodulestate_global->AugAssign_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->AugAssign_type); Py_INCREF(astmodulestate(m)->AugAssign_type);
if (PyModule_AddObject(m, "AnnAssign", if (PyModule_AddObject(m, "AnnAssign",
astmodulestate_global->AnnAssign_type) < 0) return NULL; astmodulestate_global->AnnAssign_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->AnnAssign_type); Py_INCREF(astmodulestate(m)->AnnAssign_type);
if (PyModule_AddObject(m, "For", astmodulestate_global->For_type) < 0) if (PyModule_AddObject(m, "For", astmodulestate_global->For_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->For_type); Py_INCREF(astmodulestate(m)->For_type);
if (PyModule_AddObject(m, "AsyncFor", astmodulestate_global->AsyncFor_type) if (PyModule_AddObject(m, "AsyncFor", astmodulestate_global->AsyncFor_type)
< 0) return NULL; < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->AsyncFor_type); Py_INCREF(astmodulestate(m)->AsyncFor_type);
if (PyModule_AddObject(m, "While", astmodulestate_global->While_type) < 0) if (PyModule_AddObject(m, "While", astmodulestate_global->While_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->While_type); Py_INCREF(astmodulestate(m)->While_type);
if (PyModule_AddObject(m, "If", astmodulestate_global->If_type) < 0) return if (PyModule_AddObject(m, "If", astmodulestate_global->If_type) < 0) {
NULL; goto error;
}
Py_INCREF(astmodulestate(m)->If_type); Py_INCREF(astmodulestate(m)->If_type);
if (PyModule_AddObject(m, "With", astmodulestate_global->With_type) < 0) if (PyModule_AddObject(m, "With", astmodulestate_global->With_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->With_type); Py_INCREF(astmodulestate(m)->With_type);
if (PyModule_AddObject(m, "AsyncWith", if (PyModule_AddObject(m, "AsyncWith",
astmodulestate_global->AsyncWith_type) < 0) return NULL; astmodulestate_global->AsyncWith_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->AsyncWith_type); Py_INCREF(astmodulestate(m)->AsyncWith_type);
if (PyModule_AddObject(m, "Raise", astmodulestate_global->Raise_type) < 0) if (PyModule_AddObject(m, "Raise", astmodulestate_global->Raise_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Raise_type); Py_INCREF(astmodulestate(m)->Raise_type);
if (PyModule_AddObject(m, "Try", astmodulestate_global->Try_type) < 0) if (PyModule_AddObject(m, "Try", astmodulestate_global->Try_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Try_type); Py_INCREF(astmodulestate(m)->Try_type);
if (PyModule_AddObject(m, "Assert", astmodulestate_global->Assert_type) < if (PyModule_AddObject(m, "Assert", astmodulestate_global->Assert_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Assert_type); Py_INCREF(astmodulestate(m)->Assert_type);
if (PyModule_AddObject(m, "Import", astmodulestate_global->Import_type) < if (PyModule_AddObject(m, "Import", astmodulestate_global->Import_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Import_type); Py_INCREF(astmodulestate(m)->Import_type);
if (PyModule_AddObject(m, "ImportFrom", if (PyModule_AddObject(m, "ImportFrom",
astmodulestate_global->ImportFrom_type) < 0) return NULL; astmodulestate_global->ImportFrom_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->ImportFrom_type); Py_INCREF(astmodulestate(m)->ImportFrom_type);
if (PyModule_AddObject(m, "Global", astmodulestate_global->Global_type) < if (PyModule_AddObject(m, "Global", astmodulestate_global->Global_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Global_type); Py_INCREF(astmodulestate(m)->Global_type);
if (PyModule_AddObject(m, "Nonlocal", astmodulestate_global->Nonlocal_type) if (PyModule_AddObject(m, "Nonlocal", astmodulestate_global->Nonlocal_type)
< 0) return NULL; < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Nonlocal_type); Py_INCREF(astmodulestate(m)->Nonlocal_type);
if (PyModule_AddObject(m, "Expr", astmodulestate_global->Expr_type) < 0) if (PyModule_AddObject(m, "Expr", astmodulestate_global->Expr_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Expr_type); Py_INCREF(astmodulestate(m)->Expr_type);
if (PyModule_AddObject(m, "Pass", astmodulestate_global->Pass_type) < 0) if (PyModule_AddObject(m, "Pass", astmodulestate_global->Pass_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Pass_type); Py_INCREF(astmodulestate(m)->Pass_type);
if (PyModule_AddObject(m, "Break", astmodulestate_global->Break_type) < 0) if (PyModule_AddObject(m, "Break", astmodulestate_global->Break_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Break_type); Py_INCREF(astmodulestate(m)->Break_type);
if (PyModule_AddObject(m, "Continue", astmodulestate_global->Continue_type) if (PyModule_AddObject(m, "Continue", astmodulestate_global->Continue_type)
< 0) return NULL; < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Continue_type); Py_INCREF(astmodulestate(m)->Continue_type);
if (PyModule_AddObject(m, "expr", astmodulestate_global->expr_type) < 0) if (PyModule_AddObject(m, "expr", astmodulestate_global->expr_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->expr_type); Py_INCREF(astmodulestate(m)->expr_type);
if (PyModule_AddObject(m, "BoolOp", astmodulestate_global->BoolOp_type) < if (PyModule_AddObject(m, "BoolOp", astmodulestate_global->BoolOp_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->BoolOp_type); Py_INCREF(astmodulestate(m)->BoolOp_type);
if (PyModule_AddObject(m, "NamedExpr", if (PyModule_AddObject(m, "NamedExpr",
astmodulestate_global->NamedExpr_type) < 0) return NULL; astmodulestate_global->NamedExpr_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->NamedExpr_type); Py_INCREF(astmodulestate(m)->NamedExpr_type);
if (PyModule_AddObject(m, "BinOp", astmodulestate_global->BinOp_type) < 0) if (PyModule_AddObject(m, "BinOp", astmodulestate_global->BinOp_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->BinOp_type); Py_INCREF(astmodulestate(m)->BinOp_type);
if (PyModule_AddObject(m, "UnaryOp", astmodulestate_global->UnaryOp_type) < if (PyModule_AddObject(m, "UnaryOp", astmodulestate_global->UnaryOp_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->UnaryOp_type); Py_INCREF(astmodulestate(m)->UnaryOp_type);
if (PyModule_AddObject(m, "Lambda", astmodulestate_global->Lambda_type) < if (PyModule_AddObject(m, "Lambda", astmodulestate_global->Lambda_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Lambda_type); Py_INCREF(astmodulestate(m)->Lambda_type);
if (PyModule_AddObject(m, "IfExp", astmodulestate_global->IfExp_type) < 0) if (PyModule_AddObject(m, "IfExp", astmodulestate_global->IfExp_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->IfExp_type); Py_INCREF(astmodulestate(m)->IfExp_type);
if (PyModule_AddObject(m, "Dict", astmodulestate_global->Dict_type) < 0) if (PyModule_AddObject(m, "Dict", astmodulestate_global->Dict_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Dict_type); Py_INCREF(astmodulestate(m)->Dict_type);
if (PyModule_AddObject(m, "Set", astmodulestate_global->Set_type) < 0) if (PyModule_AddObject(m, "Set", astmodulestate_global->Set_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Set_type); Py_INCREF(astmodulestate(m)->Set_type);
if (PyModule_AddObject(m, "ListComp", astmodulestate_global->ListComp_type) if (PyModule_AddObject(m, "ListComp", astmodulestate_global->ListComp_type)
< 0) return NULL; < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->ListComp_type); Py_INCREF(astmodulestate(m)->ListComp_type);
if (PyModule_AddObject(m, "SetComp", astmodulestate_global->SetComp_type) < if (PyModule_AddObject(m, "SetComp", astmodulestate_global->SetComp_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->SetComp_type); Py_INCREF(astmodulestate(m)->SetComp_type);
if (PyModule_AddObject(m, "DictComp", astmodulestate_global->DictComp_type) if (PyModule_AddObject(m, "DictComp", astmodulestate_global->DictComp_type)
< 0) return NULL; < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->DictComp_type); Py_INCREF(astmodulestate(m)->DictComp_type);
if (PyModule_AddObject(m, "GeneratorExp", if (PyModule_AddObject(m, "GeneratorExp",
astmodulestate_global->GeneratorExp_type) < 0) return NULL; astmodulestate_global->GeneratorExp_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->GeneratorExp_type); Py_INCREF(astmodulestate(m)->GeneratorExp_type);
if (PyModule_AddObject(m, "Await", astmodulestate_global->Await_type) < 0) if (PyModule_AddObject(m, "Await", astmodulestate_global->Await_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Await_type); Py_INCREF(astmodulestate(m)->Await_type);
if (PyModule_AddObject(m, "Yield", astmodulestate_global->Yield_type) < 0) if (PyModule_AddObject(m, "Yield", astmodulestate_global->Yield_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Yield_type); Py_INCREF(astmodulestate(m)->Yield_type);
if (PyModule_AddObject(m, "YieldFrom", if (PyModule_AddObject(m, "YieldFrom",
astmodulestate_global->YieldFrom_type) < 0) return NULL; astmodulestate_global->YieldFrom_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->YieldFrom_type); Py_INCREF(astmodulestate(m)->YieldFrom_type);
if (PyModule_AddObject(m, "Compare", astmodulestate_global->Compare_type) < if (PyModule_AddObject(m, "Compare", astmodulestate_global->Compare_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Compare_type); Py_INCREF(astmodulestate(m)->Compare_type);
if (PyModule_AddObject(m, "Call", astmodulestate_global->Call_type) < 0) if (PyModule_AddObject(m, "Call", astmodulestate_global->Call_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Call_type); Py_INCREF(astmodulestate(m)->Call_type);
if (PyModule_AddObject(m, "FormattedValue", if (PyModule_AddObject(m, "FormattedValue",
astmodulestate_global->FormattedValue_type) < 0) return NULL; astmodulestate_global->FormattedValue_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->FormattedValue_type); Py_INCREF(astmodulestate(m)->FormattedValue_type);
if (PyModule_AddObject(m, "JoinedStr", if (PyModule_AddObject(m, "JoinedStr",
astmodulestate_global->JoinedStr_type) < 0) return NULL; astmodulestate_global->JoinedStr_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->JoinedStr_type); Py_INCREF(astmodulestate(m)->JoinedStr_type);
if (PyModule_AddObject(m, "Constant", astmodulestate_global->Constant_type) if (PyModule_AddObject(m, "Constant", astmodulestate_global->Constant_type)
< 0) return NULL; < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Constant_type); Py_INCREF(astmodulestate(m)->Constant_type);
if (PyModule_AddObject(m, "Attribute", if (PyModule_AddObject(m, "Attribute",
astmodulestate_global->Attribute_type) < 0) return NULL; astmodulestate_global->Attribute_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Attribute_type); Py_INCREF(astmodulestate(m)->Attribute_type);
if (PyModule_AddObject(m, "Subscript", if (PyModule_AddObject(m, "Subscript",
astmodulestate_global->Subscript_type) < 0) return NULL; astmodulestate_global->Subscript_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Subscript_type); Py_INCREF(astmodulestate(m)->Subscript_type);
if (PyModule_AddObject(m, "Starred", astmodulestate_global->Starred_type) < if (PyModule_AddObject(m, "Starred", astmodulestate_global->Starred_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Starred_type); Py_INCREF(astmodulestate(m)->Starred_type);
if (PyModule_AddObject(m, "Name", astmodulestate_global->Name_type) < 0) if (PyModule_AddObject(m, "Name", astmodulestate_global->Name_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Name_type); Py_INCREF(astmodulestate(m)->Name_type);
if (PyModule_AddObject(m, "List", astmodulestate_global->List_type) < 0) if (PyModule_AddObject(m, "List", astmodulestate_global->List_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->List_type); Py_INCREF(astmodulestate(m)->List_type);
if (PyModule_AddObject(m, "Tuple", astmodulestate_global->Tuple_type) < 0) if (PyModule_AddObject(m, "Tuple", astmodulestate_global->Tuple_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Tuple_type); Py_INCREF(astmodulestate(m)->Tuple_type);
if (PyModule_AddObject(m, "expr_context", if (PyModule_AddObject(m, "expr_context",
astmodulestate_global->expr_context_type) < 0) return NULL; astmodulestate_global->expr_context_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->expr_context_type); Py_INCREF(astmodulestate(m)->expr_context_type);
if (PyModule_AddObject(m, "Load", astmodulestate_global->Load_type) < 0) if (PyModule_AddObject(m, "Load", astmodulestate_global->Load_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Load_type); Py_INCREF(astmodulestate(m)->Load_type);
if (PyModule_AddObject(m, "Store", astmodulestate_global->Store_type) < 0) if (PyModule_AddObject(m, "Store", astmodulestate_global->Store_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Store_type); Py_INCREF(astmodulestate(m)->Store_type);
if (PyModule_AddObject(m, "Del", astmodulestate_global->Del_type) < 0) if (PyModule_AddObject(m, "Del", astmodulestate_global->Del_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Del_type); Py_INCREF(astmodulestate(m)->Del_type);
if (PyModule_AddObject(m, "AugLoad", astmodulestate_global->AugLoad_type) < if (PyModule_AddObject(m, "AugLoad", astmodulestate_global->AugLoad_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->AugLoad_type); Py_INCREF(astmodulestate(m)->AugLoad_type);
if (PyModule_AddObject(m, "AugStore", astmodulestate_global->AugStore_type) if (PyModule_AddObject(m, "AugStore", astmodulestate_global->AugStore_type)
< 0) return NULL; < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->AugStore_type); Py_INCREF(astmodulestate(m)->AugStore_type);
if (PyModule_AddObject(m, "Param", astmodulestate_global->Param_type) < 0) if (PyModule_AddObject(m, "Param", astmodulestate_global->Param_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Param_type); Py_INCREF(astmodulestate(m)->Param_type);
if (PyModule_AddObject(m, "slice", astmodulestate_global->slice_type) < 0) if (PyModule_AddObject(m, "slice", astmodulestate_global->slice_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->slice_type); Py_INCREF(astmodulestate(m)->slice_type);
if (PyModule_AddObject(m, "Slice", astmodulestate_global->Slice_type) < 0) if (PyModule_AddObject(m, "Slice", astmodulestate_global->Slice_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Slice_type); Py_INCREF(astmodulestate(m)->Slice_type);
if (PyModule_AddObject(m, "ExtSlice", astmodulestate_global->ExtSlice_type) if (PyModule_AddObject(m, "ExtSlice", astmodulestate_global->ExtSlice_type)
< 0) return NULL; < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->ExtSlice_type); Py_INCREF(astmodulestate(m)->ExtSlice_type);
if (PyModule_AddObject(m, "Index", astmodulestate_global->Index_type) < 0) if (PyModule_AddObject(m, "Index", astmodulestate_global->Index_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Index_type); Py_INCREF(astmodulestate(m)->Index_type);
if (PyModule_AddObject(m, "boolop", astmodulestate_global->boolop_type) < if (PyModule_AddObject(m, "boolop", astmodulestate_global->boolop_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->boolop_type); Py_INCREF(astmodulestate(m)->boolop_type);
if (PyModule_AddObject(m, "And", astmodulestate_global->And_type) < 0) if (PyModule_AddObject(m, "And", astmodulestate_global->And_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->And_type); Py_INCREF(astmodulestate(m)->And_type);
if (PyModule_AddObject(m, "Or", astmodulestate_global->Or_type) < 0) return if (PyModule_AddObject(m, "Or", astmodulestate_global->Or_type) < 0) {
NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Or_type); Py_INCREF(astmodulestate(m)->Or_type);
if (PyModule_AddObject(m, "operator", astmodulestate_global->operator_type) if (PyModule_AddObject(m, "operator", astmodulestate_global->operator_type)
< 0) return NULL; < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->operator_type); Py_INCREF(astmodulestate(m)->operator_type);
if (PyModule_AddObject(m, "Add", astmodulestate_global->Add_type) < 0) if (PyModule_AddObject(m, "Add", astmodulestate_global->Add_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Add_type); Py_INCREF(astmodulestate(m)->Add_type);
if (PyModule_AddObject(m, "Sub", astmodulestate_global->Sub_type) < 0) if (PyModule_AddObject(m, "Sub", astmodulestate_global->Sub_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Sub_type); Py_INCREF(astmodulestate(m)->Sub_type);
if (PyModule_AddObject(m, "Mult", astmodulestate_global->Mult_type) < 0) if (PyModule_AddObject(m, "Mult", astmodulestate_global->Mult_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Mult_type); Py_INCREF(astmodulestate(m)->Mult_type);
if (PyModule_AddObject(m, "MatMult", astmodulestate_global->MatMult_type) < if (PyModule_AddObject(m, "MatMult", astmodulestate_global->MatMult_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->MatMult_type); Py_INCREF(astmodulestate(m)->MatMult_type);
if (PyModule_AddObject(m, "Div", astmodulestate_global->Div_type) < 0) if (PyModule_AddObject(m, "Div", astmodulestate_global->Div_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Div_type); Py_INCREF(astmodulestate(m)->Div_type);
if (PyModule_AddObject(m, "Mod", astmodulestate_global->Mod_type) < 0) if (PyModule_AddObject(m, "Mod", astmodulestate_global->Mod_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Mod_type); Py_INCREF(astmodulestate(m)->Mod_type);
if (PyModule_AddObject(m, "Pow", astmodulestate_global->Pow_type) < 0) if (PyModule_AddObject(m, "Pow", astmodulestate_global->Pow_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Pow_type); Py_INCREF(astmodulestate(m)->Pow_type);
if (PyModule_AddObject(m, "LShift", astmodulestate_global->LShift_type) < if (PyModule_AddObject(m, "LShift", astmodulestate_global->LShift_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->LShift_type); Py_INCREF(astmodulestate(m)->LShift_type);
if (PyModule_AddObject(m, "RShift", astmodulestate_global->RShift_type) < if (PyModule_AddObject(m, "RShift", astmodulestate_global->RShift_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->RShift_type); Py_INCREF(astmodulestate(m)->RShift_type);
if (PyModule_AddObject(m, "BitOr", astmodulestate_global->BitOr_type) < 0) if (PyModule_AddObject(m, "BitOr", astmodulestate_global->BitOr_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->BitOr_type); Py_INCREF(astmodulestate(m)->BitOr_type);
if (PyModule_AddObject(m, "BitXor", astmodulestate_global->BitXor_type) < if (PyModule_AddObject(m, "BitXor", astmodulestate_global->BitXor_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->BitXor_type); Py_INCREF(astmodulestate(m)->BitXor_type);
if (PyModule_AddObject(m, "BitAnd", astmodulestate_global->BitAnd_type) < if (PyModule_AddObject(m, "BitAnd", astmodulestate_global->BitAnd_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->BitAnd_type); Py_INCREF(astmodulestate(m)->BitAnd_type);
if (PyModule_AddObject(m, "FloorDiv", astmodulestate_global->FloorDiv_type) if (PyModule_AddObject(m, "FloorDiv", astmodulestate_global->FloorDiv_type)
< 0) return NULL; < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->FloorDiv_type); Py_INCREF(astmodulestate(m)->FloorDiv_type);
if (PyModule_AddObject(m, "unaryop", astmodulestate_global->unaryop_type) < if (PyModule_AddObject(m, "unaryop", astmodulestate_global->unaryop_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->unaryop_type); Py_INCREF(astmodulestate(m)->unaryop_type);
if (PyModule_AddObject(m, "Invert", astmodulestate_global->Invert_type) < if (PyModule_AddObject(m, "Invert", astmodulestate_global->Invert_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->Invert_type); Py_INCREF(astmodulestate(m)->Invert_type);
if (PyModule_AddObject(m, "Not", astmodulestate_global->Not_type) < 0) if (PyModule_AddObject(m, "Not", astmodulestate_global->Not_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Not_type); Py_INCREF(astmodulestate(m)->Not_type);
if (PyModule_AddObject(m, "UAdd", astmodulestate_global->UAdd_type) < 0) if (PyModule_AddObject(m, "UAdd", astmodulestate_global->UAdd_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->UAdd_type); Py_INCREF(astmodulestate(m)->UAdd_type);
if (PyModule_AddObject(m, "USub", astmodulestate_global->USub_type) < 0) if (PyModule_AddObject(m, "USub", astmodulestate_global->USub_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->USub_type); Py_INCREF(astmodulestate(m)->USub_type);
if (PyModule_AddObject(m, "cmpop", astmodulestate_global->cmpop_type) < 0) if (PyModule_AddObject(m, "cmpop", astmodulestate_global->cmpop_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->cmpop_type); Py_INCREF(astmodulestate(m)->cmpop_type);
if (PyModule_AddObject(m, "Eq", astmodulestate_global->Eq_type) < 0) return if (PyModule_AddObject(m, "Eq", astmodulestate_global->Eq_type) < 0) {
NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Eq_type); Py_INCREF(astmodulestate(m)->Eq_type);
if (PyModule_AddObject(m, "NotEq", astmodulestate_global->NotEq_type) < 0) if (PyModule_AddObject(m, "NotEq", astmodulestate_global->NotEq_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->NotEq_type); Py_INCREF(astmodulestate(m)->NotEq_type);
if (PyModule_AddObject(m, "Lt", astmodulestate_global->Lt_type) < 0) return if (PyModule_AddObject(m, "Lt", astmodulestate_global->Lt_type) < 0) {
NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Lt_type); Py_INCREF(astmodulestate(m)->Lt_type);
if (PyModule_AddObject(m, "LtE", astmodulestate_global->LtE_type) < 0) if (PyModule_AddObject(m, "LtE", astmodulestate_global->LtE_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->LtE_type); Py_INCREF(astmodulestate(m)->LtE_type);
if (PyModule_AddObject(m, "Gt", astmodulestate_global->Gt_type) < 0) return if (PyModule_AddObject(m, "Gt", astmodulestate_global->Gt_type) < 0) {
NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Gt_type); Py_INCREF(astmodulestate(m)->Gt_type);
if (PyModule_AddObject(m, "GtE", astmodulestate_global->GtE_type) < 0) if (PyModule_AddObject(m, "GtE", astmodulestate_global->GtE_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->GtE_type); Py_INCREF(astmodulestate(m)->GtE_type);
if (PyModule_AddObject(m, "Is", astmodulestate_global->Is_type) < 0) return if (PyModule_AddObject(m, "Is", astmodulestate_global->Is_type) < 0) {
NULL; goto error;
}
Py_INCREF(astmodulestate(m)->Is_type); Py_INCREF(astmodulestate(m)->Is_type);
if (PyModule_AddObject(m, "IsNot", astmodulestate_global->IsNot_type) < 0) if (PyModule_AddObject(m, "IsNot", astmodulestate_global->IsNot_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->IsNot_type); Py_INCREF(astmodulestate(m)->IsNot_type);
if (PyModule_AddObject(m, "In", astmodulestate_global->In_type) < 0) return if (PyModule_AddObject(m, "In", astmodulestate_global->In_type) < 0) {
NULL; goto error;
}
Py_INCREF(astmodulestate(m)->In_type); Py_INCREF(astmodulestate(m)->In_type);
if (PyModule_AddObject(m, "NotIn", astmodulestate_global->NotIn_type) < 0) if (PyModule_AddObject(m, "NotIn", astmodulestate_global->NotIn_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->NotIn_type); Py_INCREF(astmodulestate(m)->NotIn_type);
if (PyModule_AddObject(m, "comprehension", if (PyModule_AddObject(m, "comprehension",
astmodulestate_global->comprehension_type) < 0) return NULL; astmodulestate_global->comprehension_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->comprehension_type); Py_INCREF(astmodulestate(m)->comprehension_type);
if (PyModule_AddObject(m, "excepthandler", if (PyModule_AddObject(m, "excepthandler",
astmodulestate_global->excepthandler_type) < 0) return NULL; astmodulestate_global->excepthandler_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->excepthandler_type); Py_INCREF(astmodulestate(m)->excepthandler_type);
if (PyModule_AddObject(m, "ExceptHandler", if (PyModule_AddObject(m, "ExceptHandler",
astmodulestate_global->ExceptHandler_type) < 0) return NULL; astmodulestate_global->ExceptHandler_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->ExceptHandler_type); Py_INCREF(astmodulestate(m)->ExceptHandler_type);
if (PyModule_AddObject(m, "arguments", if (PyModule_AddObject(m, "arguments",
astmodulestate_global->arguments_type) < 0) return NULL; astmodulestate_global->arguments_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->arguments_type); Py_INCREF(astmodulestate(m)->arguments_type);
if (PyModule_AddObject(m, "arg", astmodulestate_global->arg_type) < 0) if (PyModule_AddObject(m, "arg", astmodulestate_global->arg_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->arg_type); Py_INCREF(astmodulestate(m)->arg_type);
if (PyModule_AddObject(m, "keyword", astmodulestate_global->keyword_type) < if (PyModule_AddObject(m, "keyword", astmodulestate_global->keyword_type) <
0) return NULL; 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->keyword_type); Py_INCREF(astmodulestate(m)->keyword_type);
if (PyModule_AddObject(m, "alias", astmodulestate_global->alias_type) < 0) if (PyModule_AddObject(m, "alias", astmodulestate_global->alias_type) < 0) {
return NULL; goto error;
}
Py_INCREF(astmodulestate(m)->alias_type); Py_INCREF(astmodulestate(m)->alias_type);
if (PyModule_AddObject(m, "withitem", astmodulestate_global->withitem_type) if (PyModule_AddObject(m, "withitem", astmodulestate_global->withitem_type)
< 0) return NULL; < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->withitem_type); Py_INCREF(astmodulestate(m)->withitem_type);
if (PyModule_AddObject(m, "type_ignore", if (PyModule_AddObject(m, "type_ignore",
astmodulestate_global->type_ignore_type) < 0) return NULL; astmodulestate_global->type_ignore_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->type_ignore_type); Py_INCREF(astmodulestate(m)->type_ignore_type);
if (PyModule_AddObject(m, "TypeIgnore", if (PyModule_AddObject(m, "TypeIgnore",
astmodulestate_global->TypeIgnore_type) < 0) return NULL; astmodulestate_global->TypeIgnore_type) < 0) {
goto error;
}
Py_INCREF(astmodulestate(m)->TypeIgnore_type); Py_INCREF(astmodulestate(m)->TypeIgnore_type);
return m; return m;
error:
Py_DECREF(m);
return NULL;
} }