diff options
author | Benjamin Peterson <benjamin@python.org> | 2009-03-18 20:52:15 +0000 |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2009-03-18 20:52:15 +0000 |
commit | 6ffe852f903490132bf33acbb91ee4d2d2ef06b8 (patch) | |
tree | 456df27bfc4fa59f1ed1523a8a58e31f0592ff39 /Python | |
parent | 7c33bd5ecba73625a3e48685a62870dd6a9806f1 (diff) | |
download | cpython-git-6ffe852f903490132bf33acbb91ee4d2d2ef06b8.tar.gz |
fix strange errors when setting attributes on tracebacks #4034
Diffstat (limited to 'Python')
-rw-r--r-- | Python/traceback.c | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/Python/traceback.c b/Python/traceback.c index 5df7694e66..c2d7e77a3e 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -11,20 +11,14 @@ #define OFF(x) offsetof(PyTracebackObject, x) -static struct memberlist tb_memberlist[] = { - {"tb_next", T_OBJECT, OFF(tb_next)}, - {"tb_frame", T_OBJECT, OFF(tb_frame)}, - {"tb_lasti", T_INT, OFF(tb_lasti)}, - {"tb_lineno", T_INT, OFF(tb_lineno)}, +static PyMemberDef tb_memberlist[] = { + {"tb_next", T_OBJECT, OFF(tb_next), READONLY}, + {"tb_frame", T_OBJECT, OFF(tb_frame), READONLY}, + {"tb_lasti", T_INT, OFF(tb_lasti), READONLY}, + {"tb_lineno", T_INT, OFF(tb_lineno), READONLY}, {NULL} /* Sentinel */ }; -static PyObject * -tb_getattr(PyTracebackObject *tb, char *name) -{ - return PyMember_Get((char *)tb, tb_memberlist, name); -} - static void tb_dealloc(PyTracebackObject *tb) { @@ -58,7 +52,7 @@ PyTypeObject PyTraceBack_Type = { 0, (destructor)tb_dealloc, /*tp_dealloc*/ 0, /*tp_print*/ - (getattrfunc)tb_getattr, /*tp_getattr*/ + 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_compare*/ 0, /*tp_repr*/ @@ -80,8 +74,8 @@ PyTypeObject PyTraceBack_Type = { 0, /* tp_iter */ 0, /* tp_iternext */ 0, /* tp_methods */ - 0, /* tp_members */ - 0, /* tp_getset */ + tb_memberlist, /* tp_members */ + 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ }; |