Adam Olsen added the comment: typeobject.c:1842:type_new type = (PyTypeObject *)metatype->tp_alloc(metatype, nslots); nslots may be 0.
typeobject.c:1966:type_new assigns this just-past-the-end address to tp_members type->tp_members = PyHeapType_GET_MEMBERS(et); type_new later calls PyType_Ready, which calls add_members. typeobject.c:3062:add_members for (; memb->name != NULL; memb++) { Interestingly, traverse_slots and clear_slots both use Py_Size rather than name != NULL (so I was wrong about the extent of the problem.) Both seem only to be used for heap types. add_members is used by both heap types and static C types, so it needs to handle both behaviours. One possible (if ugly) solution would be to switch iteration methods depending on if Py_Size() is 0 or not, making sure type_new sets tp_members to NULL if Py_Size() is 0. __________________________________ Tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue1237> __________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com