@@ -197,7 +197,7 @@ bufferediobase_write(PyObject *self, PyObject *args)
197197}
198198
199199
200- typedef struct _buffered {
200+ typedef struct {
201201 PyObject_HEAD
202202
203203 PyObject * raw ;
@@ -239,18 +239,8 @@ typedef struct _buffered {
239239
240240 PyObject * dict ;
241241 PyObject * weakreflist ;
242-
243- /* a doubly-linked chained list of "buffered" objects that need to
244- be flushed when the process exits */
245- struct _buffered * next , * prev ;
246242} buffered ;
247243
248- /* the actual list of buffered objects */
249- static buffered buffer_list_end = {
250- .next = & buffer_list_end ,
251- .prev = & buffer_list_end
252- };
253-
254244/*
255245 Implementation notes:
256246
@@ -389,21 +379,10 @@ _enter_buffered_busy(buffered *self)
389379 (self->buffer_size * (size / self->buffer_size)))
390380
391381
392- static void
393- remove_from_linked_list (buffered * self )
394- {
395- self -> next -> prev = self -> prev ;
396- self -> prev -> next = self -> next ;
397- self -> prev = NULL ;
398- self -> next = NULL ;
399- }
400-
401382static void
402383buffered_dealloc (buffered * self )
403384{
404385 self -> finalizing = 1 ;
405- if (self -> next != NULL )
406- remove_from_linked_list (self );
407386 if (_PyIOBase_finalize ((PyObject * ) self ) < 0 )
408387 return ;
409388 _PyObject_GC_UNTRACK (self );
@@ -1827,38 +1806,10 @@ _io_BufferedWriter___init___impl(buffered *self, PyObject *raw,
18271806 self -> fast_closed_checks = (Py_TYPE (self ) == & PyBufferedWriter_Type &&
18281807 Py_TYPE (raw ) == & PyFileIO_Type );
18291808
1830- if (self -> next == NULL ) {
1831- self -> prev = & buffer_list_end ;
1832- self -> next = buffer_list_end .next ;
1833- buffer_list_end .next -> prev = self ;
1834- buffer_list_end .next = self ;
1835- }
1836-
18371809 self -> ok = 1 ;
18381810 return 0 ;
18391811}
18401812
1841- /*
1842- * Ensure all buffered writers are flushed before proceeding with
1843- * normal shutdown. Otherwise, if the underlying file objects get
1844- * finalized before the buffered writer wrapping it then any buffered
1845- * data will be lost.
1846- */
1847- void _PyIO_atexit_flush (void )
1848- {
1849- while (buffer_list_end .next != & buffer_list_end ) {
1850- buffered * buf = buffer_list_end .next ;
1851- remove_from_linked_list (buf );
1852- if (buf -> ok && !buf -> finalizing ) {
1853- /* good state and not finalizing */
1854- Py_INCREF (buf );
1855- buffered_flush (buf , NULL );
1856- Py_DECREF (buf );
1857- PyErr_Clear ();
1858- }
1859- }
1860- }
1861-
18621813static Py_ssize_t
18631814_bufferedwriter_raw_write (buffered * self , char * start , Py_ssize_t len )
18641815{
0 commit comments