summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_io/bufferedio.c5
-rw-r--r--Modules/_io/stringio.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/Modules/_io/bufferedio.c b/Modules/_io/bufferedio.c
index b8043d4..86f7412 100644
--- a/Modules/_io/bufferedio.c
+++ b/Modules/_io/bufferedio.c
@@ -2307,6 +2307,11 @@ bufferedrwpair_isatty(rwpair *self, PyObject *args)
static PyObject *
bufferedrwpair_closed_get(rwpair *self, void *context)
{
+ if (self->writer == NULL) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "the BufferedRWPair object is being garbage-collected");
+ return NULL;
+ }
return PyObject_GetAttr((PyObject *) self->writer, _PyIO_str_closed);
}
diff --git a/Modules/_io/stringio.c b/Modules/_io/stringio.c
index c40163f..a4536b1 100644
--- a/Modules/_io/stringio.c
+++ b/Modules/_io/stringio.c
@@ -131,6 +131,10 @@ write_str(stringio *self, PyObject *obj)
return -1;
assert(PyUnicode_Check(decoded));
+ if (PyUnicode_READY(decoded)) {
+ Py_DECREF(decoded);
+ return -1;
+ }
len = PyUnicode_GET_LENGTH(decoded);
assert(len >= 0);