Message301361
Just apply the following patch to the original PR and it should work fine:
diff --git a/Modules/_io/bufferedio.c b/Modules/_io/bufferedio.c
index 50c87c1..2ba98f2 100644
--- a/Modules/_io/bufferedio.c
+++ b/Modules/_io/bufferedio.c
@@ -409,12 +409,12 @@ static void
buffered_dealloc(buffered *self)
{
self->finalizing = 1;
+ if (self->next != NULL)
+ remove_from_linked_list(self);
if (_PyIOBase_finalize((PyObject *) self) < 0)
return;
_PyObject_GC_UNTRACK(self);
self->ok = 0;
- if (self->next != NULL)
- remove_from_linked_list(self);
if (self->weakreflist != NULL)
PyObject_ClearWeakRefs((PyObject *)self);
Py_CLEAR(self->raw);
@@ -1860,8 +1860,12 @@ void _PyIO_atexit_flush(void)
while (buffer_list_end.next != &buffer_list_end) {
buffered *buf = buffer_list_end.next;
remove_from_linked_list(buf);
- buffered_flush(buf, NULL);
- PyErr_Clear();
+ if (buf->ok && !buf->finalizing) {
+ Py_INCREF(buf);
+ buffered_flush(buf, NULL);
+ Py_DECREF(buf);
+ PyErr_Clear();
+ }
}
} |
|
Date |
User |
Action |
Args |
2017-09-05 19:13:20 | pitrou | set | recipients:
+ pitrou, tim.peters, arigo, nascheme, vstinner, nikratio, neologix, martin.panter, serhiy.storchaka, xgdomingo |
2017-09-05 19:13:20 | pitrou | set | messageid: <1504638800.69.0.405441777348.issue17852@psf.upfronthosting.co.za> |
2017-09-05 19:13:20 | pitrou | link | issue17852 messages |
2017-09-05 19:13:20 | pitrou | create | |
|