]> granicus.if.org Git - python/commitdiff
Issue #18408: Fix Python-ast.c: handle init_types() failure (ex: MemoryError)
authorVictor Stinner <victor.stinner@gmail.com>
Tue, 16 Jul 2013 22:17:15 +0000 (00:17 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Tue, 16 Jul 2013 22:17:15 +0000 (00:17 +0200)
Parser/asdl_c.py
Python/Python-ast.c

index 9f855283eb9a2d662e50063155621c6344b670b0..fe8fccdf79d9e96a56ce093cf73e4e21240e7fce 100755 (executable)
@@ -1191,7 +1191,8 @@ class PartingShots(StaticVisitor):
     CODE = """
 PyObject* PyAST_mod2obj(mod_ty t)
 {
-    init_types();
+    if (!init_types())
+        return NULL;
     return ast2obj_mod(t);
 }
 
@@ -1205,7 +1206,8 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode)
     int isinstance;
     assert(0 <= mode && mode <= 2);
 
-    init_types();
+    if (!init_types())
+        return NULL;
 
     isinstance = PyObject_IsInstance(ast, req_type[mode]);
     if (isinstance == -1)
@@ -1223,7 +1225,8 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode)
 
 int PyAST_Check(PyObject* obj)
 {
-    init_types();
+    if (!init_types())
+        return -1;
     return PyObject_IsInstance(obj, (PyObject*)&AST_type);
 }
 """
index 744e640bce1c32d942d234f24c1332b6cd176790..71420c5e1ef3a8ca709f86a0d48a0bff64a56e9e 100644 (file)
@@ -7188,7 +7188,8 @@ PyInit__ast(void)
 
 PyObject* PyAST_mod2obj(mod_ty t)
 {
-    init_types();
+    if (!init_types())
+        return NULL;
     return ast2obj_mod(t);
 }
 
@@ -7202,7 +7203,8 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode)
     int isinstance;
     assert(0 <= mode && mode <= 2);
 
-    init_types();
+    if (!init_types())
+        return NULL;
 
     isinstance = PyObject_IsInstance(ast, req_type[mode]);
     if (isinstance == -1)
@@ -7220,7 +7222,8 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode)
 
 int PyAST_Check(PyObject* obj)
 {
-    init_types();
+    if (!init_types())
+        return -1;
     return PyObject_IsInstance(obj, (PyObject*)&AST_type);
 }