I missed the most important file

This commit is contained in:
Christian Heimes 2008-01-14 03:35:38 +00:00
parent 9c2019632b
commit 620fbe6632
1 changed files with 58 additions and 5 deletions

View File

@ -230,11 +230,64 @@ make_tuple(PyStructSequence *obj)
static PyObject *
structseq_repr(PyStructSequence *obj)
{
PyObject *tup, *str;
tup = make_tuple(obj);
str = PyObject_Repr(tup);
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];
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 str;
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;
}
static PyObject *