Commit b2953fa3 authored by Serhiy Storchaka's avatar Serhiy Storchaka Committed by GitHub

bpo-34739: Get rid of tp_getattro in xml.etree.ElementTree.XMLParser. (GH-9420)

Use tp_members and tp_getset instead.
parent 65ed12cb
...@@ -3685,30 +3685,25 @@ _elementtree_XMLParser__setevents_impl(XMLParserObject *self, ...@@ -3685,30 +3685,25 @@ _elementtree_XMLParser__setevents_impl(XMLParserObject *self,
Py_RETURN_NONE; Py_RETURN_NONE;
} }
static PyMemberDef xmlparser_members[] = {
{"entity", T_OBJECT, offsetof(XMLParserObject, entity), READONLY, NULL},
{"target", T_OBJECT, offsetof(XMLParserObject, target), READONLY, NULL},
{NULL}
};
static PyObject* static PyObject*
xmlparser_getattro(XMLParserObject* self, PyObject* nameobj) xmlparser_version_getter(XMLParserObject *self, void *closure)
{ {
if (PyUnicode_Check(nameobj)) {
PyObject* res;
if (_PyUnicode_EqualToASCIIString(nameobj, "entity"))
res = self->entity;
else if (_PyUnicode_EqualToASCIIString(nameobj, "target"))
res = self->target;
else if (_PyUnicode_EqualToASCIIString(nameobj, "version")) {
return PyUnicode_FromFormat( return PyUnicode_FromFormat(
"Expat %d.%d.%d", XML_MAJOR_VERSION, "Expat %d.%d.%d", XML_MAJOR_VERSION,
XML_MINOR_VERSION, XML_MICRO_VERSION); XML_MINOR_VERSION, XML_MICRO_VERSION);
}
else
goto generic;
Py_INCREF(res);
return res;
}
generic:
return PyObject_GenericGetAttr((PyObject*) self, nameobj);
} }
static PyGetSetDef xmlparser_getsetlist[] = {
{"version", (getter)xmlparser_version_getter, NULL, NULL},
{NULL},
};
#include "clinic/_elementtree.c.h" #include "clinic/_elementtree.c.h"
static PyMethodDef element_methods[] = { static PyMethodDef element_methods[] = {
...@@ -3890,7 +3885,7 @@ static PyTypeObject XMLParser_Type = { ...@@ -3890,7 +3885,7 @@ static PyTypeObject XMLParser_Type = {
0, /* tp_hash */ 0, /* tp_hash */
0, /* tp_call */ 0, /* tp_call */
0, /* tp_str */ 0, /* tp_str */
(getattrofunc)xmlparser_getattro, /* tp_getattro */ 0, /* tp_getattro */
0, /* tp_setattro */ 0, /* tp_setattro */
0, /* tp_as_buffer */ 0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC,
...@@ -3903,8 +3898,8 @@ static PyTypeObject XMLParser_Type = { ...@@ -3903,8 +3898,8 @@ static PyTypeObject XMLParser_Type = {
0, /* tp_iter */ 0, /* tp_iter */
0, /* tp_iternext */ 0, /* tp_iternext */
xmlparser_methods, /* tp_methods */ xmlparser_methods, /* tp_methods */
0, /* tp_members */ xmlparser_members, /* tp_members */
0, /* tp_getset */ xmlparser_getsetlist, /* tp_getset */
0, /* tp_base */ 0, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
......
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