diff -r a507882736b2 Parser/asdl_c.py --- a/Parser/asdl_c.py Wed Jan 25 22:33:43 2017 +0900 +++ b/Parser/asdl_c.py Thu Jan 26 00:46:36 2017 +0900 @@ -776,12 +776,19 @@ static PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int num_fields) { _Py_IDENTIFIER(__module__); _Py_IDENTIFIER(_ast); + PyObject *id_fields = _PyUnicode_FromId(&PyId__fields); + PyObject *id_module = _PyUnicode_FromId(&PyId___module__); + PyObject *id_ast = _PyUnicode_FromId(&PyId__ast); + if (id_fields == NULL || id_module == NULL || id_ast == NULL) { + return NULL; + } + PyObject *fnames, *result; int i; fnames = PyTuple_New(num_fields); if (!fnames) return NULL; for (i = 0; i < num_fields; i++) { PyObject *field = PyUnicode_FromString(fields[i]); @@ -789,16 +796,13 @@ Py_DECREF(fnames); return NULL; } PyTuple_SET_ITEM(fnames, i, field); } result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){OOOO}", - type, base, - _PyUnicode_FromId(&PyId__fields), fnames, - _PyUnicode_FromId(&PyId___module__), - _PyUnicode_FromId(&PyId__ast)); + type, base, id_fields, fnames, id_module, id_ast); Py_DECREF(fnames); return (PyTypeObject*)result; } static int add_attributes(PyTypeObject* type, char**attrs, int num_fields) { diff -r a507882736b2 Python/Python-ast.c --- a/Python/Python-ast.c Wed Jan 25 22:33:43 2017 +0900 +++ b/Python/Python-ast.c Thu Jan 26 00:46:36 2017 +0900 @@ -658,12 +658,19 @@ static PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int num_fields) { _Py_IDENTIFIER(__module__); _Py_IDENTIFIER(_ast); + PyObject *id_fields = _PyUnicode_FromId(&PyId__fields); + PyObject *id_module = _PyUnicode_FromId(&PyId___module__); + PyObject *id_ast = _PyUnicode_FromId(&PyId__ast); + if (id_fields == NULL || id_module == NULL || id_ast == NULL) { + return NULL; + } + PyObject *fnames, *result; int i; fnames = PyTuple_New(num_fields); if (!fnames) return NULL; for (i = 0; i < num_fields; i++) { PyObject *field = PyUnicode_FromString(fields[i]); @@ -671,16 +678,13 @@ Py_DECREF(fnames); return NULL; } PyTuple_SET_ITEM(fnames, i, field); } result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){OOOO}", - type, base, - _PyUnicode_FromId(&PyId__fields), fnames, - _PyUnicode_FromId(&PyId___module__), - _PyUnicode_FromId(&PyId__ast)); + type, base, id_fields, fnames, id_module, id_ast); Py_DECREF(fnames); return (PyTypeObject*)result; } static int add_attributes(PyTypeObject* type, char**attrs, int num_fields) {