mirror of https://github.com/python/cpython
Issue #18408: Fix Python-ast.c: handle init_types() failure (ex: MemoryError)
This commit is contained in:
parent
6684bdf73d
commit
bdf630c4a7
|
@ -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)
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
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)
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue