Commit bdf630c4 authored by Victor Stinner's avatar Victor Stinner

Issue #18408: Fix Python-ast.c: handle init_types() failure (ex: MemoryError)

parent 6684bdf7
...@@ -1191,7 +1191,8 @@ class PartingShots(StaticVisitor): ...@@ -1191,7 +1191,8 @@ class PartingShots(StaticVisitor):
CODE = """ CODE = """
PyObject* PyAST_mod2obj(mod_ty t) PyObject* PyAST_mod2obj(mod_ty t)
{ {
init_types(); if (!init_types())
return NULL;
return ast2obj_mod(t); return ast2obj_mod(t);
} }
...@@ -1205,7 +1206,8 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode) ...@@ -1205,7 +1206,8 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode)
int isinstance; int isinstance;
assert(0 <= mode && mode <= 2); assert(0 <= mode && mode <= 2);
init_types(); if (!init_types())
return NULL;
isinstance = PyObject_IsInstance(ast, req_type[mode]); isinstance = PyObject_IsInstance(ast, req_type[mode]);
if (isinstance == -1) if (isinstance == -1)
...@@ -1223,7 +1225,8 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode) ...@@ -1223,7 +1225,8 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode)
int PyAST_Check(PyObject* obj) int PyAST_Check(PyObject* obj)
{ {
init_types(); if (!init_types())
return -1;
return PyObject_IsInstance(obj, (PyObject*)&AST_type); return PyObject_IsInstance(obj, (PyObject*)&AST_type);
} }
""" """
......
...@@ -7188,7 +7188,8 @@ PyInit__ast(void) ...@@ -7188,7 +7188,8 @@ PyInit__ast(void)
PyObject* PyAST_mod2obj(mod_ty t) PyObject* PyAST_mod2obj(mod_ty t)
{ {
init_types(); if (!init_types())
return NULL;
return ast2obj_mod(t); return ast2obj_mod(t);
} }
...@@ -7202,7 +7203,8 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode) ...@@ -7202,7 +7203,8 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode)
int isinstance; int isinstance;
assert(0 <= mode && mode <= 2); assert(0 <= mode && mode <= 2);
init_types(); if (!init_types())
return NULL;
isinstance = PyObject_IsInstance(ast, req_type[mode]); isinstance = PyObject_IsInstance(ast, req_type[mode]);
if (isinstance == -1) if (isinstance == -1)
...@@ -7220,7 +7222,8 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode) ...@@ -7220,7 +7222,8 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode)
int PyAST_Check(PyObject* obj) int PyAST_Check(PyObject* obj)
{ {
init_types(); if (!init_types())
return -1;
return PyObject_IsInstance(obj, (PyObject*)&AST_type); return PyObject_IsInstance(obj, (PyObject*)&AST_type);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment