@@ -106,11 +106,9 @@ _io__BufferedIOBase_readinto1_impl(PyObject *self, Py_buffer *buffer)
106106}
107107
108108static PyObject *
109- bufferediobase_unsupported (const char * message )
109+ bufferediobase_unsupported (_PyIO_State * state , const char * message )
110110{
111- _PyIO_State * state = IO_STATE ();
112- if (state != NULL )
113- PyErr_SetString (state -> unsupported_operation , message );
111+ PyErr_SetString (state -> unsupported_operation , message );
114112 return NULL ;
115113}
116114
@@ -127,7 +125,8 @@ static PyObject *
127125_io__BufferedIOBase_detach_impl (PyObject * self )
128126/*[clinic end generated code: output=754977c8d10ed88c input=822427fb58fe4169]*/
129127{
130- return bufferediobase_unsupported ("detach" );
128+ _PyIO_State * state = IO_STATE ();
129+ return bufferediobase_unsupported (state , "detach" );
131130}
132131
133132PyDoc_STRVAR (bufferediobase_read_doc ,
@@ -151,7 +150,8 @@ PyDoc_STRVAR(bufferediobase_read_doc,
151150static PyObject *
152151bufferediobase_read (PyObject * self , PyObject * args )
153152{
154- return bufferediobase_unsupported ("read" );
153+ _PyIO_State * state = IO_STATE ();
154+ return bufferediobase_unsupported (state , "read" );
155155}
156156
157157PyDoc_STRVAR (bufferediobase_read1_doc ,
@@ -164,7 +164,8 @@ PyDoc_STRVAR(bufferediobase_read1_doc,
164164static PyObject *
165165bufferediobase_read1 (PyObject * self , PyObject * args )
166166{
167- return bufferediobase_unsupported ("read1" );
167+ _PyIO_State * state = IO_STATE ();
168+ return bufferediobase_unsupported (state , "read1" );
168169}
169170
170171PyDoc_STRVAR (bufferediobase_write_doc ,
@@ -179,7 +180,8 @@ PyDoc_STRVAR(bufferediobase_write_doc,
179180static PyObject *
180181bufferediobase_write (PyObject * self , PyObject * args )
181182{
182- return bufferediobase_unsupported ("write" );
183+ _PyIO_State * state = IO_STATE ();
184+ return bufferediobase_unsupported (state , "write" );
183185}
184186
185187
@@ -1222,8 +1224,10 @@ _io__Buffered_seek_impl(buffered *self, PyObject *targetobj, int whence)
12221224
12231225 CHECK_CLOSED (self , "seek of closed file" )
12241226
1225- if (_PyIOBase_check_seekable (self -> raw , Py_True ) == NULL )
1227+ _PyIO_State * state = find_io_state_by_def (Py_TYPE (self ));
1228+ if (_PyIOBase_check_seekable (state , self -> raw , Py_True ) == NULL ) {
12261229 return NULL ;
1230+ }
12271231
12281232 target = PyNumber_AsOff_t (targetobj , PyExc_ValueError );
12291233 if (target == -1 && PyErr_Occurred ())
@@ -1298,7 +1302,8 @@ _io__Buffered_truncate_impl(buffered *self, PyObject *pos)
12981302 CHECK_INITIALIZED (self )
12991303 CHECK_CLOSED (self , "truncate of closed file" )
13001304 if (!self -> writable ) {
1301- return bufferediobase_unsupported ("truncate" );
1305+ _PyIO_State * state = IO_STATE ();
1306+ return bufferediobase_unsupported (state , "truncate" );
13021307 }
13031308 if (!ENTER_BUFFERED (self ))
13041309 return NULL ;
@@ -1419,8 +1424,10 @@ _io_BufferedReader___init___impl(buffered *self, PyObject *raw,
14191424 self -> ok = 0 ;
14201425 self -> detached = 0 ;
14211426
1422- if (_PyIOBase_check_readable (raw , Py_True ) == NULL )
1427+ _PyIO_State * state = find_io_state_by_def (Py_TYPE (self ));
1428+ if (_PyIOBase_check_readable (state , raw , Py_True ) == NULL ) {
14231429 return -1 ;
1430+ }
14241431
14251432 Py_XSETREF (self -> raw , Py_NewRef (raw ));
14261433 self -> buffer_size = buffer_size ;
@@ -1431,7 +1438,6 @@ _io_BufferedReader___init___impl(buffered *self, PyObject *raw,
14311438 return -1 ;
14321439 _bufferedreader_reset_buf (self );
14331440
1434- _PyIO_State * state = find_io_state_by_def (Py_TYPE (self ));
14351441 self -> fast_closed_checks = (
14361442 Py_IS_TYPE (self , state -> PyBufferedReader_Type ) &&
14371443 Py_IS_TYPE (raw , state -> PyFileIO_Type )
@@ -1774,8 +1780,10 @@ _io_BufferedWriter___init___impl(buffered *self, PyObject *raw,
17741780 self -> ok = 0 ;
17751781 self -> detached = 0 ;
17761782
1777- if (_PyIOBase_check_writable (raw , Py_True ) == NULL )
1783+ _PyIO_State * state = find_io_state_by_def (Py_TYPE (self ));
1784+ if (_PyIOBase_check_writable (state , raw , Py_True ) == NULL ) {
17781785 return -1 ;
1786+ }
17791787
17801788 Py_INCREF (raw );
17811789 Py_XSETREF (self -> raw , raw );
@@ -1788,7 +1796,6 @@ _io_BufferedWriter___init___impl(buffered *self, PyObject *raw,
17881796 _bufferedwriter_reset_buf (self );
17891797 self -> pos = 0 ;
17901798
1791- _PyIO_State * state = find_io_state_by_def (Py_TYPE (self ));
17921799 self -> fast_closed_checks = (
17931800 Py_IS_TYPE (self , state -> PyBufferedWriter_Type ) &&
17941801 Py_IS_TYPE (raw , state -> PyFileIO_Type )
@@ -2092,12 +2099,14 @@ _io_BufferedRWPair___init___impl(rwpair *self, PyObject *reader,
20922099 PyObject * writer , Py_ssize_t buffer_size )
20932100/*[clinic end generated code: output=327e73d1aee8f984 input=620d42d71f33a031]*/
20942101{
2095- if (_PyIOBase_check_readable (reader , Py_True ) == NULL )
2102+ _PyIO_State * state = find_io_state_by_def (Py_TYPE (self ));
2103+ if (_PyIOBase_check_readable (state , reader , Py_True ) == NULL ) {
20962104 return -1 ;
2097- if (_PyIOBase_check_writable (writer , Py_True ) == NULL )
2105+ }
2106+ if (_PyIOBase_check_writable (state , writer , Py_True ) == NULL ) {
20982107 return -1 ;
2108+ }
20992109
2100- _PyIO_State * state = find_io_state_by_def (Py_TYPE (self ));
21012110 self -> reader = (buffered * ) PyObject_CallFunction (
21022111 (PyObject * )state -> PyBufferedReader_Type ,
21032112 "On" , reader , buffer_size );
@@ -2290,12 +2299,16 @@ _io_BufferedRandom___init___impl(buffered *self, PyObject *raw,
22902299 self -> ok = 0 ;
22912300 self -> detached = 0 ;
22922301
2293- if (_PyIOBase_check_seekable (raw , Py_True ) == NULL )
2302+ _PyIO_State * state = find_io_state_by_def (Py_TYPE (self ));
2303+ if (_PyIOBase_check_seekable (state , raw , Py_True ) == NULL ) {
22942304 return -1 ;
2295- if (_PyIOBase_check_readable (raw , Py_True ) == NULL )
2305+ }
2306+ if (_PyIOBase_check_readable (state , raw , Py_True ) == NULL ) {
22962307 return -1 ;
2297- if (_PyIOBase_check_writable (raw , Py_True ) == NULL )
2308+ }
2309+ if (_PyIOBase_check_writable (state , raw , Py_True ) == NULL ) {
22982310 return -1 ;
2311+ }
22992312
23002313 Py_INCREF (raw );
23012314 Py_XSETREF (self -> raw , raw );
@@ -2309,7 +2322,6 @@ _io_BufferedRandom___init___impl(buffered *self, PyObject *raw,
23092322 _bufferedwriter_reset_buf (self );
23102323 self -> pos = 0 ;
23112324
2312- _PyIO_State * state = find_io_state_by_def (Py_TYPE (self ));
23132325 self -> fast_closed_checks = (Py_IS_TYPE (self , state -> PyBufferedRandom_Type ) &&
23142326 Py_IS_TYPE (raw , state -> PyFileIO_Type ));
23152327
0 commit comments