summaryrefslogtreecommitdiffstats
path: root/Modules/cStringIO.c
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2003-08-08 12:20:03 (GMT)
committerRaymond Hettinger <python@rcn.com>2003-08-08 12:20:03 (GMT)
commit5475f2394abea43c541d8660ed91af920634add5 (patch)
tree714500f4e60cfc6950b1f9303bdd9da964e98795 /Modules/cStringIO.c
parent6e13bcc7b187aff61628120fa58e5cee2ae32f68 (diff)
downloadcpython-5475f2394abea43c541d8660ed91af920634add5.zip
cpython-5475f2394abea43c541d8660ed91af920634add5.tar.gz
cpython-5475f2394abea43c541d8660ed91af920634add5.tar.bz2
SF bug #770485: cStringIO does not set closed attr
Diffstat (limited to 'Modules/cStringIO.c')
-rw-r--r--Modules/cStringIO.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/Modules/cStringIO.c b/Modules/cStringIO.c
index bc23c77..ac84ab0 100644
--- a/Modules/cStringIO.c
+++ b/Modules/cStringIO.c
@@ -88,6 +88,22 @@ IO__opencheck(IOobject *self) {
}
static PyObject *
+IO_get_closed(IOobject *self, void *closure)
+{
+ PyObject *result = Py_False;
+
+ if (self->buf == NULL)
+ result = Py_True;
+ Py_INCREF(result);
+ return result;
+}
+
+static PyGetSetDef file_getsetlist[] = {
+ {"closed", (getter)IO_get_closed, NULL, "True if the file is closed"},
+ {0},
+};
+
+static PyObject *
IO_flush(IOobject *self, PyObject *unused) {
UNLESS (IO__opencheck(self)) return NULL;
@@ -455,6 +471,7 @@ static struct PyMethodDef O_methods[] = {
static PyMemberDef O_memberlist[] = {
{"softspace", T_INT, offsetof(Oobject, softspace), 0,
"flag indicating that a space needs to be printed; used by print"},
+ /* getattr(f, "closed") is implemented without this table */
{NULL} /* Sentinel */
};
@@ -498,7 +515,8 @@ static PyTypeObject Otype = {
PyObject_SelfIter, /*tp_iter */
(iternextfunc)IO_iternext, /*tp_iternext */
O_methods, /*tp_methods */
- O_memberlist /*tp_members */
+ O_memberlist, /*tp_members */
+ file_getsetlist, /*tp_getset */
};
static PyObject *
@@ -614,7 +632,9 @@ static PyTypeObject Itype = {
0, /* tp_weaklistoffset */
PyObject_SelfIter, /* tp_iter */
(iternextfunc)IO_iternext, /* tp_iternext */
- I_methods /* tp_methods */
+ I_methods, /* tp_methods */
+ 0, /* tp_members */
+ file_getsetlist, /* tp_getset */
};
static PyObject *