Skip to content

Commit ee634a4

Browse files
committed
Get rid of traceback.c:tb_getattr in favor of marking the members as READONLY.
1 parent 3a38c91 commit ee634a4

File tree

1 file changed

+3
-19
lines changed

1 file changed

+3
-19
lines changed

Python/traceback.c

+3-19
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,6 @@ static PyMemberDef tb_memberlist[] = {
1919
{NULL} /* Sentinel */
2020
};
2121

22-
/* XXX(nnorwitz): can we get rid of tb_getattr and use tp_members? */
23-
static PyObject *
24-
tb_getattr(PyTracebackObject *tb, char *name)
25-
{
26-
int i;
27-
for (i = 0; tb_memberlist[i].name != NULL; i++) {
28-
if (strcmp(name, tb_memberlist[i].name) == 0)
29-
return PyMember_GetOne((const char *)tb,
30-
tb_memberlist + i);
31-
}
32-
PyErr_Format(PyExc_AttributeError,
33-
"'%.50s' object has no attribute '%.400s'",
34-
Py_Type(tb)->tp_name, name);
35-
return NULL;
36-
}
37-
3822
static void
3923
tb_dealloc(PyTracebackObject *tb)
4024
{
@@ -68,7 +52,7 @@ PyTypeObject PyTraceBack_Type = {
6852
0,
6953
(destructor)tb_dealloc, /*tp_dealloc*/
7054
0, /*tp_print*/
71-
(getattrfunc)tb_getattr, /*tp_getattr*/
55+
0, /*tp_getattr*/
7256
0, /*tp_setattr*/
7357
0, /*tp_compare*/
7458
0, /*tp_repr*/
@@ -78,7 +62,7 @@ PyTypeObject PyTraceBack_Type = {
7862
0, /* tp_hash */
7963
0, /* tp_call */
8064
0, /* tp_str */
81-
0, /* tp_getattro */
65+
PyObject_GenericGetAttr, /* tp_getattro */
8266
0, /* tp_setattro */
8367
0, /* tp_as_buffer */
8468
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
@@ -90,7 +74,7 @@ PyTypeObject PyTraceBack_Type = {
9074
0, /* tp_iter */
9175
0, /* tp_iternext */
9276
0, /* tp_methods */
93-
0, /* tp_members */
77+
tb_memberlist, /* tp_members */
9478
0, /* tp_getset */
9579
0, /* tp_base */
9680
0, /* tp_dict */

0 commit comments

Comments
 (0)