Christian Heimes added the comment: Does anybody see a problem with this repr slot implementation for structseq? It gives this output:
>>> os.stat(".") <posix.stat_result st_mode=16832, st_ino=11666571L, st_dev=65025L, st_nlink=20, st_uid=1000, st_gid=1000, st_size=4096L, st_atime=1200261754, st_mtime=1200261721, st_ctime=1200261721> static PyObject * structseq_repr(PyStructSequence *obj) { PyObject *tup, *val, *repr; PyTypeObject *typ = Py_TYPE(obj); int i, len; char buf[250+5]; /* "...>\0" */ char *cname, *crepr; char *pbuf = buf; char *endbuf = &buf[250]; *pbuf++ = '<'; strncpy(pbuf, typ->tp_name, 50); pbuf += strlen(typ->tp_name) > 50 ? 50 : strlen(typ->tp_name); *pbuf++ = ' '; if ((tup = make_tuple(obj)) == NULL) { return NULL; } for (i=0; i < VISIBLE_SIZE(obj); i++) { cname = typ->tp_members[i].name; val = PyTuple_GetItem(tup, i); if (cname == NULL || val == NULL) { return NULL; } repr = PyObject_Repr(val); if (repr == NULL) { Py_DECREF(tup); return NULL; } crepr = PyString_AsString(repr); if (crepr == NULL) { Py_DECREF(tup); Py_DECREF(repr); return NULL; } len = strlen(cname) + strlen(crepr) + 3; if ((pbuf+len) < endbuf) { strcpy(pbuf, cname); pbuf += strlen(cname); *pbuf++ = '='; strcpy(pbuf, crepr); pbuf += strlen(crepr); *pbuf++ = ','; *pbuf++ = ' '; Py_DECREF(repr); } else { strcpy(pbuf, "..."); pbuf += 5; Py_DECREF(repr); break; } } Py_DECREF(tup); pbuf-=2; *pbuf++ = '>'; *pbuf = '\0'; repr = PyString_FromString(buf); return repr; } __________________________________ Tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue1816> __________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com