diff options
Diffstat (limited to 'Modules')
| -rw-r--r-- | Modules/_io/bufferedio.c | 5 | ||||
| -rw-r--r-- | Modules/_io/stringio.c | 4 |
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); |
