diff options
Diffstat (limited to 'Python/Python-ast.c')
| -rw-r--r-- | Python/Python-ast.c | 18 | 
1 files changed, 18 insertions, 0 deletions
diff --git a/Python/Python-ast.c b/Python/Python-ast.c index 1c78515..cabc666 100644 --- a/Python/Python-ast.c +++ b/Python/Python-ast.c @@ -615,11 +615,29 @@ static int obj2ast_bool(PyObject* obj, bool* out, PyArena* arena)      return 0;  } +static int add_ast_fields() +{ +    PyObject *empty_tuple, *d; +    if (PyType_Ready(&AST_type) < 0) +        return -1; +    d = AST_type.tp_dict; +    empty_tuple = PyTuple_New(0); +    if (!empty_tuple || +        PyDict_SetItemString(d, "_fields", empty_tuple) < 0 || +        PyDict_SetItemString(d, "_attributes", empty_tuple) < 0) { +        Py_XDECREF(empty_tuple); +        return -1; +    } +    Py_DECREF(empty_tuple); +    return 0; +} +  static int init_types(void)  {          static int initialized;          if (initialized) return 1; +        if (add_ast_fields() < 0) return 0;          mod_type = make_type("mod", &AST_type, NULL, 0);          if (!mod_type) return 0;          if (!add_attributes(mod_type, NULL, 0)) return 0;  | 
